spark-submit 与 hive 的查询性能 shell
Query performance in spark-submit vs hive shell
我很难调试为什么针对 hive 外部 table(支持 dynamodb)的简单查询通过 spark-submit 花费了 10 分钟以上,而在 hive shell 中只需要 4 秒.
Hive External Table 引用 Dynamodb table 说 Employee[id, name, ssn, dept]。 id 是分区键,ssn 是范围键。
使用 aws emr 5.29、spark、hive、tez、hadoop。 1 主,4 核,m5.l
在配置单元 shell 中:select name, dept, ssn from employee here id='123/ABC/X12I'
returns 在 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
上面的spark提交耗时14+分钟。我不确定需要调整或设置哪个参数以获得更好的响应时间。
在配置单元shell中我做了一个SET
;查看 hive shell 正在使用的参数,并且有大量的参数。
我还尝试了一种 boto3 dynamodb 搜索方式,它比我简单的 py sql 到 spark-submit 快得多。
我缺少基础知识...欢迎任何想法或方向。
当我尝试通过执行 collect() 进行打印时,我正在进行聚合。我读到了它,但没有意识到它有那么糟糕(时间明智)。我也确实做了一些更多的实验,比如 take(n) limit 1.
我很难调试为什么针对 hive 外部 table(支持 dynamodb)的简单查询通过 spark-submit 花费了 10 分钟以上,而在 hive shell 中只需要 4 秒.
Hive External Table 引用 Dynamodb table 说 Employee[id, name, ssn, dept]。 id 是分区键,ssn 是范围键。
使用 aws emr 5.29、spark、hive、tez、hadoop。 1 主,4 核,m5.l
在配置单元 shell 中:select name, dept, ssn from employee here id='123/ABC/X12I'
returns 在 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
上面的spark提交耗时14+分钟。我不确定需要调整或设置哪个参数以获得更好的响应时间。
在配置单元shell中我做了一个SET
;查看 hive shell 正在使用的参数,并且有大量的参数。
我还尝试了一种 boto3 dynamodb 搜索方式,它比我简单的 py sql 到 spark-submit 快得多。
我缺少基础知识...欢迎任何想法或方向。
当我尝试通过执行 collect() 进行打印时,我正在进行聚合。我读到了它,但没有意识到它有那么糟糕(时间明智)。我也确实做了一些更多的实验,比如 take(n) limit 1.