我们可以使用 Sqoop2 导入来仅创建一个文件而不是到 HIVE 表中等吗?



我尝试在 Sqoop2 中运行以下命令:

这个工作在哪里创建了制表符分隔的零件文件(part-m-00000,part-m-00001等(:

sqoop import --connect jdbc:oracle:thin:@999.999.999.999:1521/SIDNAME --username god --table TABLENAME --fields-terminated-by 't' --lines-terminated-by 'n' -P

这个失败了:

sqoop import -Dmapreduce.job.user.classpath.first=true 
-Dmapreduce.output.basename=`date +%Y-%m-%d` 
--connect jdbc:oracle:thin:@999.999.999.999:1521/SIDNAME 
--username nbkeplo 
--P 
--table TABLENAME 
--columns "COL1, COL2, COL3" 
--target-dir /usr/data/sqoop 
-–as-parquetfile 
-m 10

错误:

20/01/08 09:21:23 ERROR tool.BaseSqoopTool: Error parsing arguments for import:
20/01/08 09:21:23 ERROR tool.BaseSqoopTool: Unrecognized argument: -–as-parquetfile
20/01/08 09:21:23 ERROR tool.BaseSqoopTool: Unrecognized argument: -m
20/01/08 09:21:23 ERROR tool.BaseSqoopTool: Unrecognized argument: 10
Try --help for usage instructions.

我希望输出是<.parquet>文件而不是HIVE表(希望直接与Apache Spark一起使用而不使用HIVE(。这<.parquet>文件创建是否可以通过Sqoop导入?

使用 Sqoop 可以直接导入到 HDFS(如 AVRO、SequenceFile 或 (。 输出到 Hive 时,它仍会写入 HDFS,就在托管表的 Hive 仓库中。 此外,Spark能够从它有权访问的任何HDFS位置读取。

您的代码片段不同,并且您没有提及您尝试过的故障排除步骤。

我会将--split-by--fields-terminated-by--lines-terminated-by参数添加到您的命令中。

以下工作:

sqoop import 
--connect jdbc:oracle:thin:@999.999.999.999:1521/SIDNAME 
--username user 
--target-dir /xxx/yyy/zzz 
--as-parquetfile 
--table TABLE1 
-P

最新更新