我有一个 pyspark
包含大量行的Dataframedf。其中一列是lat long。我想从lat long中找到州名。我使用下面的代码
import reverse_geocoder as rg
new_df = df_new2.toPandas()
list_long_lat = a["lat_long"].tolist()
result = rg.search(list_long_lat)
state_name=[]
for each_entry in result:
state_name.append(each_entry["admin2"])
state_values = pd.Series(state_name)
a.insert(loc=0, column='State_name', value=state_values)
首先,当转换到pandas时,我遇到了内存不足的问题。考虑到输入Dataframe中的行数是多少,有没有任何方法可以在不从pysparkDataframe转换到pandasDataframe的情况下有效地找到状态名huge:1000000 million
2条答案
按热度按时间dddzy1tm1#
你能试着创建一个自定义项吗
这里唯一的缺点是udf不是很快,而且这会多次命中api。
nzkunb0c2#
没有做太多的pyspark,但是pyspark的语法有点类似于pandas。也许可以试试下面的片段。
当数据集超过1m条记录时,循环整个数据集通常不起作用,您可能需要看看
apply
为了提高效率。