从 Hive 分区拼花表导出 sqoop 到 oracle



是否可以从拼花分区的Hive表到Oracle数据库进行sqoop导出?

我们的要求是将处理后的数据用于不支持Hadoop/Hive连接的遗留系统,谢谢。

试:

sqoop export -Dmapreduce.job.queuename=root.hsi_sqm 
--connect jdbc:oracle:thin:@host:1521:sid 
--username abc 
--password cde 
--export-dir '/user/hive/warehouse/stg.db/tb_parquet_w_partition/' 
--table UNIQSUBS_DAY

出现错误:

ERROR sqoop.Sqoop: Got exception running Sqoop: org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/stg.db/tb_parquet_w_partition/.metadata
org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/stg.db/tb_parquet_w_partition/.metadata
    at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.checkExists(FileSystemMetadataProvider.java:562)
    at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.find(FileSystemMetadataProvider.java:605)
    at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.load(FileSystemMetadataProvider.java:114)
    at org.kitesdk.data.spi.filesystem.FileSystemDatasetRepository.load(FileSystemDatasetRepository.java:197)
    at org.kitesdk.data.Datasets.load(Datasets.java:108)
    at org.kitesdk.data.Datasets.load(Datasets.java:140)
    at org.kitesdk.data.mapreduce.DatasetKeyInputFormat$ConfigBuilder.readFrom(DatasetKeyInputFormat.java:92)
    at org.kitesdk.data.mapreduce.DatasetKeyInputFormat$ConfigBuilder.readFrom(DatasetKeyInputFormat.java:139)
    at org.apache.sqoop.mapreduce.JdbcExportJob.configureInputFormat(JdbcExportJob.java:84)
    at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:432)
    at org.apache.sqoop.manager.OracleManager.exportTable(OracleManager.java:465)
    at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80)
    at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:252)

对此有什么正确的方法吗?

我们面临着类似的问题。

Parquet 创建 .metadata 文件夹。如果您使用其他进程创建了镶木地板,它可能会创建类似 .metadata-00000(类似的东西(。

您可以尝试将文件夹重命名为 .metadata 并尝试。

否则,如果这不起作用,您可以尝试使用 hcatalog sqoop 导出。

嗨,

对于那些遇到与我相同的问题的人,这是我自己的解决方案(这可能会因您的环境而异(

  1. 将 Hive 数据写入 HDFS 目录,可以在 Hive 中使用插入覆盖目录命令。
  2. 如果在指定的 HDFS 路径中压缩了从 Hive 查询生成的数据,请使用以下命令: hdfs dfs -text <hdfs_path_file>/000000_0.deflate | hdfs dfs -put <target_file_name> <hdfs_target_path>
  3. sqoop 使用 sqoop export 命令导出膨胀的文件,不要忘记根据目标表中的数据类型映射列

最新更新