4.作为4.的解决方案,我决定首先以Avro格式将表格导入HDFS,例如:
sqoop import --connect 'jdbc:sqlserver://server;database=dbname' --username someuser --password somepassword --as-avrodatafile --num-mappers 8 --table tablename --warehouse-dir /dataload/tohdfs/ --verbose
现在我计划创建一个Hive表,但我提到了一些问题here。
我的问题是,鉴于以上所有要点,最安全的(在时间方面而不是搞乱HDFS等)方法 - 首先引入HDFS,创建Hive表并进行实验或直接导入Hive(I dunno如果现在我删除这些表并希望重新开始,我是否必须重新导入数据)
答案 0 :(得分:0)
要加载,您可以尝试这些选项
1)您可以对csv文件执行mysql导入,该文件将作为备份存储在Linux文件系统中,然后对HDFS执行distcp。
2)如上所述,您可以执行Sqoop导入并将数据加载到Hive表(parent_table)。
使用不同格式检查性能&分区表,您可以使用CTAS(Create Table As Select)查询,您可以在其中从基表(parent_table)创建新表。在CTAS中,您可以提到parque或avro等格式,并且分区选项也在那里。
即使您删除CTAS创建的新表,基表也会在那里。
根据我的经验,Parque +分区将提供最佳性能,但也取决于您的数据。
答案 1 :(得分:0)
我看到连接和设置都是正确的。但我在查询中看到--fetch-size
。默认情况下,--fetch-size
为1000,这将永远占用您的情况。如果列数不足则。我建议增加--fetch-size 10000
。当列数小于50时,我已经达到50000。如果你有100列,可能是20000。我建议检查每行的数据大小然后再决定。如果有一列大小超过1MB的数据。然后我不会推荐1000以上的任何东西。