编辑:现在我再次重读该帖子,为问题添加更多上下文:
假设我有一个正在使用的 pyspark 数据框,目前我可以像这样重新分区数据框:
dataframe.repartition(200, col_name)
Run Code Online (Sandbox Code Playgroud)
我将分区数据帧写入镶木地板文件中。读取目录时,看到仓库中的目录是按照我想要的方式分区的:
/apps/hive/warehouse/db/DATE/col_name=1
/apps/hive/warehouse/db/DATE/col_name=2
Run Code Online (Sandbox Code Playgroud)
我想了解如何将其重新分区为多个层,这意味着我将一列划分为顶级分区,将第二列划分为第二级分区,将第三列划分为第三级分区。就像在 write 方法中添加一个partitionBy()一样简单吗?
dataframe.mode("overwrite").partitionBy("col_name1","col_name2","col_name3")
Run Code Online (Sandbox Code Playgroud)
从而创建这样的目录?
/apps/hive/warehouse/db/DATE/col_name1=1
|--------------------------------------->/col_name2=1
|--------------------------------------------------->/col_name3=1
Run Code Online (Sandbox Code Playgroud)
如果是这样,我可以使用partitionBy()来写出每个分区的最大文件数吗?
我有一个字符串列表,比方说:
fruit_list = ["apple", "banana", "coconut"]
Run Code Online (Sandbox Code Playgroud)
我有一些 Pandas Dataframe,例如:
import pandas as pd
data = [['Apple farm', 10], ['Banana field', 15], ['Coconut beach', 14], ['corn field', 10]]
df = pd.DataFrame(data, columns = ['fruit_source', 'value'])
Run Code Online (Sandbox Code Playgroud)
我想根据现有列“fruit_source”的文本搜索来填充一个新列。我想要填充的是与 df 中的特定列匹配的任何元素。一种写法是:
df["fruit"] = NaN
for index, row in df.iterrows():
for fruit in fruit_list:
if fruit in row['fruit_source']:
df.loc[index,'fruit'] = fruit
else:
df.loc[index,'fruit'] = "fruit not found"
Run Code Online (Sandbox Code Playgroud)
其中数据框填充了水果源收集的水果的新列。
然而,当将其扩展到更大的数据帧时,这种迭代可能会带来性能问题。原因是,随着引入更多行,迭代也会由于迭代列表而爆炸。
有没有更有效的方法可以做到?
有没有人有在 Ubuntu 20.04 上安装 R 的好方法?我似乎无法通过 apt 找到针对 20.04 焦点的特定解决方案。
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
Run Code Online (Sandbox Code Playgroud)
编辑:通过这里的链接并将条目添加到sources.list后,我遇到了依赖问题:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The …Run Code Online (Sandbox Code Playgroud)