我在Amazon EMR上使用Hive将CSV数据的ETL转换为Parquet数据(并应用强类型模式)。我使用最多250个打开连接的thrift从我的SQS监听器应用程序连接到HiveServer2。
ETL看起来像:SET参数,CREATE EXTERNAL TABLE(源),CREATE EXTERNAL TABLE(目标),INSERT OVERRIDE,DROP TABLE
一次运行~100或更少的ETL时,SET,CREATE和DROP语句的性能是亚秒。 INSERT通过MR作业需要约100秒。
现在,当我一次将这个增加到大约250个ETL时,SET,CREATE和DROP语句的性能会变得更糟。即使每个ETL都在一个单独的连接上,看起来这些简单的语句也会被卡在INSERT语句后面。
我尝试增加hive.server2.async.exec.threads
和hive.server2.async.exec.wait.queue.size
,但我没有看到差异。我错过了其他一些可调配置吗?
我基本上无法通过占用集群资源来推动足够的工作。我知道批处理是一种策略,但我想保持数据的生动性。