我正在尝试将数据从apache cloudera中的mysql db sqoop到hive表。
以下是我正在执行的sqoop查询: sqoop import --connect jdbc:postgresql:// localhost / test --username admin --password admin --incremental append --check-column sale_id --last-value 0 --query' SELECT s.sale_id, c.cust_id,c.state,s.qty FROM customer c JOIN sales s on c.cust_id = s.cust_id WHERE $ CONDITIONS' --split-by s.sale_id --hive-import --hive-table sales --target -dir / user / cloudera / sales_products --hive-delims-replacement' / t'
从命令提示符/控制台执行时,查询工作正常。但是,当我尝试通过HUE UI作业设计器执行相同操作时,我收到以下错误: 解析导入的参数时出错
我认为这是因为$ CONDITIONS论证。
如果可以使用Hue执行相同的查询以及它是如何可行的,请告诉我。
提前致谢,
答案 0 :(得分:1)
Hue将通过Oozie Sqoop Action提交此脚本。它有一种特定的方式来指定参数。
Hue还附带了一个内置的Sqoop示例,您可以尝试使用导入进行修改。
答案 1 :(得分:0)
当通过Hue运行sqoop语句时,需要$ CONDITIONS 是必需的,至少在没有它的情况下我没有成功。
我使用the method I describe in the answer to this question将数据从SQL Server加载到外部Hive表中,这些表位于HDFS文件夹中。这是我用来从Impala创建表的DDL,但它也可以从Hive编辑器中使用。
CREATE TABLE HiveDB_NameSpace.ExternalHiveTableName (
ColumnName1 STRING
ColumnName2 STRING,
ColumnName3 STRING,
ColumnName4 STRING,
ColumnName5 TIMESTAMP,
ColumnName6 INT
ColumnName7 STRING
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' LOCATION '/user/foldername/dbname/tablename';
这适用于登陆100多张桌子。然后,当我将数据插入内部Hive,Kudu或其他表格时,我可以清理,优化和符合数据。