Scala 从数据帧中选择和处理数据的最有效方法
我想使用Scala从Spark中的数据帧加载和处理数据。 原始SQL语句如下所示:Scala 从数据帧中选择和处理数据的最有效方法,scala,hadoop,apache-spark,dataframe,Scala,Hadoop,Apache Spark,Dataframe,我想使用Scala从Spark中的数据帧加载和处理数据。 原始SQL语句如下所示: INSERT INTO TABLE_1 ( key_attribute, attribute_1, attribute_2 ) SELECT MIN(TABLE_2.key_attribute), CURRENT_TIMESTAMP as attribute_1, 'Some_String' as attribute_2 FROM TABLE_2 LEFT OUTER JOIN TAB
INSERT INTO TABLE_1
(
key_attribute,
attribute_1,
attribute_2
)
SELECT
MIN(TABLE_2.key_attribute),
CURRENT_TIMESTAMP as attribute_1,
'Some_String' as attribute_2
FROM TABLE_2
LEFT OUTER JOIN TABLE_1
ON TABLE_2.key_attribute = TABLE_1.key_attribute
WHERE
TABLE_1.key_attribute IS NULL
AND TABLE_2.key_attribute IS NOT NULL
GROUP BY
attribute_1,
attribute_2,
TABLE_2.key_attribute
到目前为止我所做的:
我从Select语句创建了一个DataFrame,并将其与表2 DataFrame连接起来
val table_1 = spark.sql("Select key_attribute, current_timestamp() as attribute_1, 'Some_String' as attribute_2").toDF();
table_2.join(table_1, Seq("key_attribute"), "left_outer");
因为我面临许多困难,所以没有取得多大进展:
处理的几个步骤是-
关于效率,由于处理将并行进行,因此需要注意。如果您想了解更多关于效率的信息,请提及。Spark SQL,特别是Spark 2,非常擅长以高效的方式执行优化和昂贵的操作。您是否尝试过将数据源注册为表并在Spark SQL上运行原始查询而不做任何修改?将Spark DataFrame转换为配置单元表,然后使用Spark SQL查询该表?