我尝试使用Sqoop将数据从MySQL表导入Hive。根据我的理解,有两种方法可以做到这一点。
将数据导入HDFS,然后在Hive中创建外部表并将数据加载到该表中。
在运行Sqoop查询时使用create-hive-table
在Hive中创建一个新表并直接将数据加载到该表中。我试图这样做,但由于某种原因不能这样做
这是我的代码
sqoop import \
--connect jdbc:mysql://localhost/EMPLOYEE \
--username root \
--password root \
--table emp \
--m 1 \
--hive-database sqoopimport \
--hive-table sqoopimport.employee \
--create-hive-table \
--fields-terminated-by ',';
我也尝试使用--hive-import
,但收到了错误。
当我运行上述查询时,作业成功但是在hive中没有创建表,并且数据存储在\user\HDFS\emp\
位置,其中\HDFS\emp
在作业期间创建了--m 1
。
PS:我也找不到将$ids = Get-EC2Instance -Filter @( @{name='tag:Name'; values="*EXAMPLE*"}) | Select-Object -ExpandProperty instances | Sort-Object $_.Tag.Value
与Sqoop一起使用的任何理由。它只是在所有查询中。
答案 0 :(得分:0)
我的导入使用以下查询。无需编写create-hive-table
我们只需用hive-table
编写新表名,即可创建该表。如果有任何问题,请转到hive-metastore
位置并运行rm *.lck
,然后再次尝试导入。
sqoop import \
--connect jdbc:mysql://localhost/EMPLOYEE \
--username root \
--password root \
--table emp4 \
--hive-import \
--hive-table sqoopimport.emp4 \
--fields-terminated-by "," ;