小编pfn*_*sel的帖子

从 DataFrame 列的列表中删除空字符串

我有一DataFrame列包含一个带有一些空值的列表:

df.select('foo').show(10)
+----------+
|foo       |
+----------+
|[,]       |
|[bar, baz]|
|[,bar]    |
+----------+
Run Code Online (Sandbox Code Playgroud)

我想过滤掉所有空值,即它应该如下所示:

+----------+
|foo       |
+----------+
|null      |
|[bar, baz]|
|[bar]     |
+----------+
Run Code Online (Sandbox Code Playgroud)

我尝试使用array_remove,但无法排除空字符串。

apache-spark apache-spark-sql pyspark

3
推荐指数
1
解决办法
1794
查看次数

引用命令替换的正确方法

我有一个简单的 bash 脚本,它只输出作为位置参数提供给脚本的文件名:

#!/usr/bin/env bash

for file; do
    echo "$file"
done
Run Code Online (Sandbox Code Playgroud)

假设我有带空格的文件(比如“f 1”和“f 2”)。我可以使用通配符调用脚本并获得预期的输出:

$ ./script f*
> f 1
> f 2
Run Code Online (Sandbox Code Playgroud)

但是如果我使用命令替换它不起作用:

$ ./script $(echo f*)
> f
> 1
> f
> 2
Run Code Online (Sandbox Code Playgroud)

当我的命令替换输出多个带空格的文件名时,如何正确引用?

编辑:我最终想要的是以随机顺序将文件名传递给脚本(这比仅仅回显它们的名称要复杂一些),例如:

./script $(ls f* | shuf)
Run Code Online (Sandbox Code Playgroud)

bash command-substitution

2
推荐指数
1
解决办法
58
查看次数

区分三个int的值

我有三个整数变量,只能取值0,12.我想区分我所有三个数字的组合,排序不计算在内.假设变量被调用x,y并且z.然后,x=1, y=0, z=0x=0, y=1, z=0x=0, y=0, z=1在此情况下,所有相同的号码,我将把这个组合001.

现在有一百种方法可以做到这一点,但我要求一个优雅的解决方案,不仅仅是出于教育目的.

我想到按位数按位移位001:

001 << 0 = 1
001 << 1 = 2
001 << 2 = 4
Run Code Online (Sandbox Code Playgroud)

但接下来的数字002111两者都会给出6.

c++ math bit-manipulation

1
推荐指数
1
解决办法
115
查看次数

如何检查属性是否具有__init__中定义的默认值

如何检查用户是否设置了对象的属性?目前,我有一堂课

class foo:
    def __init__(self):
        self.bar = 'baz'
Run Code Online (Sandbox Code Playgroud)

后来我想检查用户是否设置了值bar,即用类似的东西

my_foo = foo()
my_foo.bar = 'mybaz'
Run Code Online (Sandbox Code Playgroud)

所以我想知道上面的第二行是否已被调用(如果没有则抛出警告).我有两个解决方案,但我不喜欢它们中的任何一个:

  1. 检查是否my_foo.bar等于默认值.但可能是用户设置my_foo.bar为相同的值,然后我不想发出警告.

  2. 请勿设置默认值__init__,但仅限于使用时.然后可以检查getattr()并设置setattr().

我确信有一种优雅的pythonic方式可以做到这一点,我没有想到.

python

1
推荐指数
1
解决办法
751
查看次数

org.apache.nifi.web.NiFiCoreException:无法启动流控制器

我正在设置一个包含 3 个节点的 NiFi 1.7.1 版本构建集群。我正在使用 3 个其他节点作为 Zookeeper(不使用嵌入式 zk)使用 Java 1.8 build 181

使用外部zookeeper在集群模式下启动Nifi时出现此错误

Nifi-bootstrap.log

2018-08-21 19:58:49,675 INFO [main] org.apache.nifi.bootstrap.Command Launched Apache NiFi with Process ID 14956
2018-08-21 19:58:50,156 INFO [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Apache NiFi now running and listening for Bootstrap requests on port 44710
2018-08-21 19:59:09,700 ERROR [NiFi logging handler] org.apache.nifi.StdErr Failed to start web server: Unable to start Flow Controller.
2018-08-21 19:59:09,701 ERROR [NiFi logging handler] org.apache.nifi.StdErr Shutting down...
2018-08-21 19:59:10,679 INFO [main] org.apache.nifi.bootstrap.RunNiFi NiFi …
Run Code Online (Sandbox Code Playgroud)

apache-nifi

1
推荐指数
1
解决办法
7829
查看次数

修改ArrayType中的所有元素

我有一个DataFrame的列ArrayType(StringType)

+------------------------------------+
|colname                             |
+------------------------------------+
|[foo_XX_foo, bar_YY_bar]            |
|[qwe_ZZ_rty, asd_AA_fgh, zxc_BB_vbn]|
+------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我现在想提取第一个和第二个之间的字符串_,即预期的输出是:

+------------+
|newcolname  |
+------------+
|[XX, YY]    |
|[ZZ, AA, BB]|
+------------+
Run Code Online (Sandbox Code Playgroud)

这个答案,我试图用expr()transform,但我没能得到它的工作。即使将所有字符串更改为大写的示例(如上述引用的答案)也不适用于我,但出现以下错误:

pyspark.sql.utils.ParseException:u“ \ nextraneous输入'>'期望{'(','SELECT',...

如何修改中的所有元素ArrayType?我想避免使用udf

apache-spark pyspark pyspark-sql pyspark-dataframes

1
推荐指数
1
解决办法
88
查看次数

我需要使用nohup和&

我看到很多人都在使用以下命令:

nohup ./sendData.sh >logs/send.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)

由于nohup已经使用过,我还需要添加&路径吗?

linux shell

0
推荐指数
1
解决办法
1057
查看次数

如何在VIM中替换表达式

我想在替换搜索到的表达式.

例如:

我用的表达式搜索:/0x....- >它将搜索格式的所有字符串 0x0001,0x0002,0x1234,等.

现在,我想的东西,如更换上面的搜索项目0x0001_mystring,0x0002_mystring,0x1234_mystring等等.

regex vim

0
推荐指数
1
解决办法
117
查看次数

Vim - 仅在某些行上执行替换

我在寻求仅在偶数行上执行替换时发现了以下内容:

:g/^/if !(line('.')%2)|s/foo/bar/g|endif 
Run Code Online (Sandbox Code Playgroud)

效果很好.但有人可以解释一下|的必要性 :g调用的命令部分中的字符?

vim substitution

0
推荐指数
1
解决办法
75
查看次数