spark-submit与hive-shell中的查询性能



我很难调试为什么通过spark-submit对hive外部表(generandb-backed(进行简单查询需要10分钟以上的时间,而在hive-shell中只需要4秒。

Hive外部表引用Dynamodb表,比如Employee[id,name,ssn,dept]。id是分区键,ssn是范围键。

使用aws emr 5.29,spark,hive,tez,hadoop。1个主机,4个核心,m5.l

在hive shell中:select name, dept, ssn from employee here id='123/ABC/X12I'在4秒内返回结果。

现在,假设我在code.py中有以下代码(忽略导入(

spark = SparkSession.builder.appName("test").enableHiveSupport().getOrCreate()
data=spark.sql("select name, dept, ssn from employee here id='123/ABC/X12I'")
# print data or get length

我在主节点上提交上述内容为:

spark-submit --jars /pathto/emr-ddb-hive.jar, /pathto/emr-ddb-hadoop.jar code.py

以上火花提交需要很长时间14+分钟。我不确定哪个参数需要调整或设置才能获得更好的响应时间。

在蜂箱壳里,我做了一个SET;查看hive shell正在使用的参数,并且有大量的参数。

我还尝试了一种boto3动态数据库的搜索方式,它比我简单的py-sql更快地激发提交。

我错过了基本面。。。任何想法或方向都值得赞赏。

当我试图通过执行collect((打印时,我正在进行聚合。我读过它,但没有意识到它有那么糟糕(从时间上来说(。我最终也做了一些实验,比如take(n(极限1

最新更新