我正在尝试使用SparkSQL在数据帧上执行广播散列连接,如下所示:https://docs.cloud.databricks.com/docs/latest/databricks_guide/06%20Spark%20SQL%20%26%20DataFrames/05% 20BroadcastHashJoin%20-%20scala.html
在该示例中,(small)DataFrame通过saveAsTable持久化,然后通过spark SQL(即via)进行连接sqlContext.sql("..."))
我遇到的问题是我需要使用sparkSQL API来构造我的SQL(我还要加入~50个带有ID列表的表,并且不想手工编写SQL).
How do I tell spark to use the broadcast hash join via the API? The issue is that if I load the ID list (from the table persisted via `saveAsTable`) into a `DataFrame` to use in the join, it isn't clear to me if Spark can apply the broadcast hash join.
Run Code Online (Sandbox Code Playgroud) 想象一下,您正在通过 SparkContext 和 Hive 加载一个大型数据集。所以这个数据集然后分布在你的 Spark 集群中。例如,对数千个变量的观察(值 + 时间戳)。
现在您将使用一些 map/reduce 方法或聚合来组织/分析您的数据。例如按变量名称分组。
分组后,您可以获得每个变量的所有观察值(值)作为时间序列数据框。如果您现在使用 DataFrame.toPandas
def myFunction(data_frame):
data_frame.toPandas()
df = sc.load....
df.groupBy('var_name').mapValues(_.toDF).map(myFunction)
Run Code Online (Sandbox Code Playgroud)