복붙노트

[HADOOP] hdfs에서 mysql로 ​​sqoop 내보내기에 실패했습니다. 문자를 이스케이프 처리하는 데 도움이 필요합니다

HADOOP

hdfs에서 mysql로 ​​sqoop 내보내기에 실패했습니다. 문자를 이스케이프 처리하는 데 도움이 필요합니다

hdfs에 파일이 있고 sqoop 테이블로 내보내는 중입니다. 아래의 로그 세부 사항을 찾으십시오.

Caused by: java.lang.RuntimeException: Can't parse input data: ' characters'
    at tags.__loadFromFields(tags.java:335)
    at tags.parse(tags.java:268)
    at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
    ... 10 more

sqoop 내보내기 명령

sqoop export \
--connect "**************************************" \
--username=**** \
--password=***** \
--table tags \
--export-dir /user/cloudera/movie_lens/tags_no_header.csv \
--batch \
--input-lines-terminated-by '\n' \
--input-fields-terminated-by ',' \
--num-mappers 9 \

테이블 구조 :

create table tags
    (userId integer
    ,movieId integer
    ,tag varchar(150)
    ,timestamp decimal
    );

기록 실패 : 660,260, "상상 세계, 인물, 이야기, 철학적", 1436680217

내 이해에 따르면 문자열 중간에 쉼표 ','로 인한 모호한 구문 분석으로 인해 실패합니다.

이 경우 --input-enclosed-by 및 --input-escaped-by 인수의 사용법을 이해하도록 도와주십시오. 또는 다른 해결책이 있습니까?

해결법

  1. ==============================

    1.속성 --input-optionally-enclosed-by를 사용하여 해결했습니다. 내보내기 명령 :

    속성 --input-optionally-enclosed-by를 사용하여 해결했습니다. 내보내기 명령 :

    sqoop export \
    --connect "jdbc:mysql://quickstart.cloudera:3306/movie_lens_db" \
    --username=root \
    --password=cloudera \
    --table tags \
    --export-dir /user/cloudera/escape_by_test.txt \
    --batch \
    --input-lines-terminated-by '\n' \
    --input-fields-terminated-by ',' \
    --input-optionally-enclosed-by '\"' \
    --num-mappers 1 \
    --outdir java_files
    

    테이블 데이터 :

    +--------+---------+---------------------------------------------------+------------+
    | userId | movieId | tag                                               | timestamp  |
    +--------+---------+---------------------------------------------------+------------+
    |    660 |     260 | imaginary world, characters, story, philosophical | 1436680217 |
    |    212 |   69712 | genuine characters                                | 1260688086 |
    +--------+---------+---------------------------------------------------+------------+
    
  2. from https://stackoverflow.com/questions/43112262/sqoop-export-from-hdfs-to-mysql-failed-need-help-to-escape-the-characters by cc-by-sa and MIT license