我有一个数据框(在 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,所以我不确定是否可以应用相同的逻辑。
我正在运行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)
我试图弄清楚一旦我击中某个字符,如何从尾部修剪 Bash 中的字符串。
示例:如果我的字符串是这个(或任何链接):https://www.cnpp.usda.gov/Innovations/DataSource/MyFoodapediaData.zip
(我将其设置为我的变量)。(也就是说,如果我echo $var它会返回该链接:)
我想使用 Bash,我猜我需要使用 sed 或 awk,但我想修剪,从末尾开始,直到看到第一个 / (因为将是文件名)并将其删除。
因此,使用该链接,我尝试获取 / 所以只是“MyFoodapediaData.zip”并将其设置为不同的变量。
所以最后,如果我 echo $var2 (如果我这样称呼它)它只会返回:MyFoodapediaData.zip”
我尝试使用 sed 's.*/" ,这将从头开始,直到找到第一个斜杠。如果可能的话,我正在寻找相反的顺序。
python ×2
apache-spark ×1
apache-toree ×1
awk ×1
bash ×1
dataframe ×1
dictionary ×1
jupyter ×1
pyspark ×1
scala ×1
sed ×1
trim ×1