在性能方面,用spark连接2个hive表(外部)的最佳方法是什么?
使用Spark SQLspark.sql("select * from tableA join tableB on a=b)
B)直接阅读 parquet 文件
val df1 = spark.read.parquet("/hdfs/location1")
val df2 = spark.read.parquet("/hdfs/location2")
val joined = df1.join(df2, Seq("id"), "inner")
有什么区别吗?如果table被管理,会有什么不同吗?
我注意到,计划是相同的,但加入表从Hive它总是下载的执行程序的整个文件大小。
1条答案
按热度按时间icnyk63a1#
我会说,这取决于开发人员在选择Spark SQL或DataFrame时的舒适度,他/她想要使用。就性能而言,这真的不重要,因为底层的spark内置函数相互镜像(DataFrame和Spark-SQL)。
不久前,当我有这个想法时,我正在浏览数据自白的博客-dataframes-vs-sparksql
他在博客的最后一部分提到,
我认为SparkSQL和DataFrames在管道中的区别可能比其他任何东西都更理论和情感。
我绝对同意这些句子。