使用EMR集群,我创建了一个映射到DynamoDB表的外部Hive表(超过8亿行) . 它运作良好,我可以通过蜂巢进行查询和插入 .
如果我通过Hive中的hash_key尝试查询条件,我会在几秒钟内得到结果 . 但是使用SparkSQL和enableHiveSupport(访问Hive)通过spark-submit执行相同的查询它没有完成 . 似乎从Spark它正在对表进行全面扫描 .
我尝试了几种配置(例如,不同的hive-site.xml),但它似乎不能很好地从Spark中运行 . 我应该如何通过Spark做到这一点?有什么建议?
谢谢
1 回答
只需确保使用AWS的dynamo连接器opensource . 默认情况下,它可在EMR AFAIK上使用 .
使用DynamoDBStorageHandler类创建表的语法:
对于任何Spark Job,您需要具备以下内容:
参考文献:https://github.com/awslabs/emr-dynamodb-connector