zoukankan      html  css  js  c++  java
  • sqoop无法导出parquet文件到mysql

    1.问题描述


    在CDH集群中我们需要将Hive表的数据导入到RDBMS数据库中,使用Sqoop工具可以方便的将Hive表数据抽取到RDBMS数据库中,在使用Sqoop抽取Hive Parquet表时作业执行异常。

    Sqoop抽数脚本:

    sqoop export 
    --connect jdbc:mysql://localhost:3306/test_db 
    --username root 
    --password 123456 
    --table mytest_parquet 
    --export-dir /user/hive/warehouse/mytest_parquet 
    -m 1

    异常日志:

    Sqoop: org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata
    Exception: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata
            at org.kitesdk.FileSystemMetadataProvider.checkExists(FileSystemMetadataProvider.java:562)
            at org.kitesdk.FileSystemMetadataProvider.find(FileSystemMetadataProvider.java:605)
            at org.kitesdk.ileSystemMetadataProvider.load(FileSystemMetadataProvider.java:114)
            at org.kitesdk.FileSystemDatasetRepository.load(FileSystemDatasetRepository.java:197)
            at org.kitesdk.data.Datasets.load(Datasets.java:108)
            at org.kitesdk.data.Datasets.load(Datasets.java:140)        

    2.解决方法


    1.将Sqoop抽数脚本修改为如下:

    sqoop export 
    --connect jdbc:mysql://ip-172-31-22-86.ap-southeast-1.compute.internal:3306/test_db 
    --username testuser 
    --password password 
    --table mytest_parquet 
    --hcatalog-database default 
    --hcatalog-table mytest_parquet --num-mappers 1

    参数说明:

    --table:MySQL库中的表名

    --hcatalog-database:Hive中的库名

    --hcatalog-table:Hive库中的表名,需要抽数的表

    --num-mappers:执行作业的Map数

    作业执行成功。

    3.总结


    目前通过Sqoop从Hive的parquet抽数到关系型数据库的时候会报kitesdk找不到文件的错,这是Sqoop已知的问题,参考SQOOP-2907:

    https://issues.apache.org/jira/browse/SQOOP-2907

    该jira目前并没有修复,如果要实现该功能,需要参考第二章的做法,使用hcatalog参数指定到Hive表。

  • 相关阅读:
    Mac上反编译Android apk安装包
    静态链表
    x = x &(x-1)
    C语言itoa()函数和atoi()函数
    以文本方式和二进制方式操作文件
    自己实现memcpy,strcpy与strncpy
    实现中英文混合string的逆向输出
    实现纯英文string的逆序输出
    C语言实现字符串逆序输出
    ASCII码对照表
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/9633505.html
Copyright © 2011-2022 走看看