火花提交与配置单元外壳的查询性能

问题描述 投票:1回答:1

我很难调试为什么对hive外部表(支持dynamodb的简单查询)通过spark-submit花费10分钟以上,而在hive shell中仅花费4秒。

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

使用AWS Emr 5.29,Spark,Hive,Tez和hadoop。 1个主服务器,4个内核,m5.l

在配置单元外壳中: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;查看蜂巢壳正在使用的参数,并且有大量的信息。

我还尝试了boto3 dynamodb搜索方式,它比我简单的py sql进行火花提交的方式要快。

我缺少基本原理...任何想法或方向都值得赞赏。

apache-spark pyspark hive amazon-dynamodb amazon-emr
1个回答
0
投票

我尝试通过执行collect()进行打印时正在进行聚合。我读了一下,但是没有意识到那是那么糟糕(明智的选择)。我也确实做了更多的实验,例如take(n) limit 1

© www.soinside.com 2019 - 2024. All rights reserved.