小编rob*_*omo的帖子

将 Pyspark 数据框中的字典拆分为单独的列

我有一个数据框(在 Pyspark 中),其中一个行值作为字典:

df.show()
Run Code Online (Sandbox Code Playgroud)

它看起来像:

+----+---+-----------------------------+
|name|age|info                         |
+----+---+-----------------------------+
|rob |26 |{color: red, car: volkswagen}|
|evan|25 |{color: blue, car: mazda}    |
+----+---+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

根据评论给出更多:

df.printSchema()
Run Code Online (Sandbox Code Playgroud)

类型是字符串

root
 |-- name: string (nullable = true)
 |-- age: string (nullable = true)
 |-- dict: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

是否可以从字典(颜色和汽车)中获取键并将它们设置为数据框中的列,并将值作为这些列的行?

预期结果:

+----+---+-----------------------------+
|name|age|color |car                   |
+----+---+-----------------------------+
|rob |26 |red   |volkswagen            |
|evan|25 |blue  |mazda                 |
+----+---+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

我不知道我必须使用 df.withColumn() 并以某种方式遍历字典来选择每个字典,然后从中创建一列?到目前为止,我已经尝试找到一些答案,但大多数都使用 Pandas,而不是 Spark,所以我不确定是否可以应用相同的逻辑。

python dictionary dataframe apache-spark pyspark

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

为Jupyter(Anaconda)安装Scala内核(或Spark/Toree)

我正在运行RHEL 6.7,并安装了Anaconda.(anaconda 4.10).Jupyter正在使用OOTB,默认情况下它有Python内核.一切都花花公子所以我可以在Jupyter中选择"python notebook".

我现在也想让Scala与Jupyter建立起来.(看起来像Spark内核 - 现在Toree会起作用吗?)

我见过的每一个问题/答案都没有引用我遇到的问题.

我试图安装Toree,并且做到了

sudo pip install toree 
Run Code Online (Sandbox Code Playgroud)

它起作用了.但接下来的步骤也是如此

jupyter toree install
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是:

jupyter toree install
Traceback (most recent call last):
  File "/usr/app/anaconda/bin/jupyter-toree", line 7, in <module>
    from toree.toreeapp import main
ImportError: No module named toree.toreeapp
Run Code Online (Sandbox Code Playgroud)

我错过了一步吗?我做错了什么?如果我需要提供更多信息,我也会很高兴.谢谢!

编辑:在Jupyter中获取Scala笔记本的标准/最简单/最可靠的方法是什么?(TL; DR)

python scala jupyter jupyter-notebook apache-toree

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

根据 Bash 中的特定字符修剪字符串(尾部)

我试图弄清楚一旦我击中某个字符,如何从尾部修剪 Bash 中的字符串。

示例:如果我的字符串是这个(或任何链接):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip

(我将其设置为我的变量)。(也就是说,如果我echo $var它会返回该链接:)

我想使用 Bash,我猜我需要使用 sed 或 awk,但我想修剪,从末尾开始,直到看到第一个 / (因为将是文件名)并将其删除。

因此,使用该链接,我尝试获取 / 所以只是“MyFoodapediaData.zip”并将其设置为不同的变量。

所以最后,如果我 echo $var2 (如果我这样称呼它)它只会返回:MyFoodapediaData.zip”

我尝试使用 sed 's.*/" ,这将从头开始,直到找到第一个斜杠。如果可能的话,我正在寻找相反的顺序。

bash awk sed trim

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