hadoop - Sqoop:使用八进制值(\0)作为分隔符

标签 hadoop sqoop

由于我在其中一个字段中有特殊字符,因此我想使用较低的值作为分隔符。 Hive与定界符(\ 0)配合正常,但sqoop失败,并显示NoSuchElement Exception。看起来它没有将分隔符检测为\ 0。

这就是我的 hive 一个sqoop脚本的样子。请帮忙。

CREATE TABLE SCHEMA.test
(
    name CHAR(20),
    id    int,
    dte_report date
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\0' 
LOCATION '/user/$USER/test';

sqoop-export \
    -Dmapred.job.name="TEST" \
    -Dorg.apache.sqoop.export.text.dump_data_on_error=true \
    --options-file ${OPTION_FILE_LOCATION}\conn_mysql \
    --export-dir /user/$USER/test \
    --input-fields-terminated-by '\0' \
    --input-lines-terminated-by '\n' \
    --input-null-string '\\N' \
    --input-null-non-string '\\N' \
    --table MYSQL_TEST \
    --validate \
    --outdir /export/home/$USER/javalib

在VI编辑器中,定界符看起来像'^ @',而使用od -c时,定界符为\ 0

最佳答案

将可以解决此问题的my sql conn字符串中的字符集设置为UTF 8。

mysql.url=jdbc:mysql://localhost:3306/nbs?useJvmCharsetConverters=false&useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useEncoding=true

关于hadoop - Sqoop:使用八进制值(\0)作为分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867231/

相关文章:

hadoop - 在 Spark 中使用哪个设置来指定 `Output` 的压缩?

hadoop - HDFS并行读取大文件

mysql - 导入到 hdfs 时出现 Sqoop 错误

mysql - 如何将数据从 Hadoop 导出到 MySQL/任何数据库?

hadoop - 将数据加载到 HIVE 中的问题

azure - 文件未在 HDInsights 群集中使用 Spark 保存在 Azure blob 中

hadoop - 在包含连接的表上执行增量 Sqoop?

hadoop - oozie - sqoop $SQOOP_CONF_DIR 尚未在环境中设置

java - 如何使用子工作流程循环进入oozie?

hadoop - SQOOP 连接参数文件格式