Apache spark 使用配置单元表迭代Spark数据帧

Apache spark 使用配置单元表迭代Spark数据帧,apache-spark,hive,pyspark,apache-spark-sql,hiveql,Apache Spark,Hive,Pyspark,Apache Spark Sql,Hiveql,我有一个非常大的csv文件,所以我使用spark并将其加载到spark数据框中。 我需要从csv上的每一行提取纬度和经度,以便创建一个对开本地图。 有了熊猫,我可以通过循环解决我的问题: for index, row in locations.iterrows(): folium.CircleMarker(location=(row["Pickup_latitude"], row["Pickup_longitude"]

我有一个非常大的csv文件,所以我使用spark并将其加载到spark数据框中。 我需要从csv上的每一行提取纬度和经度,以便创建一个对开本地图。 有了熊猫,我可以通过循环解决我的问题:

for index, row in locations.iterrows():    

    folium.CircleMarker(location=(row["Pickup_latitude"],
                              row["Pickup_longitude"]),
                    radius=20,
                    color="#0A8A9F",fill=True).add_to(marker_cluster)
我发现与熊猫数据帧不同,spark数据帧不能由循环=>处理

所以我想,为了解决这个问题,我可以将大数据切割成蜂巢表,然后进行迭代


是否可以在配置单元表中剪切巨大的SPARK数据帧,然后使用循环迭代行?

通常不需要迭代DataFrame或RDD。您只创建将应用于每个记录的转换,如map,然后调用一些操作来调用该处理

你需要像这样的东西:

dataframe.withColumn("latitude", <how to extract latitude>)
         .withColumn("longitude", <how to extract longitude>)
         .select("latitude", "longitude")
         .rdd
         .map(row => <extract values from Row type>)
         .collect()         // this will move data to local collection
如果无法使用SQL执行此操作,则需要使用RDD执行此操作:

dataframe
     .rdd
     .map(row => <create new row with latitude and longitude>)
     .collect()

请使用指南来改进您的问题。不,您不理解我的意思,我不想在数据框中添加列。我想要的是将每一行的语言和纬度保存到一个变量中,这样我以后就可以在地图中看到它了。我找到了在spark中循环rdd的每个操作。不幸的是,folium对象不可序列化,所以我的问题没有得到解决