복붙노트

[HADOOP] 만에 의해 종료 LINES 지금은 '\ n'은 줄 바꿈을 지원합니다

HADOOP

만에 의해 종료 LINES 지금은 '\ n'은 줄 바꿈을 지원합니다

컬럼은 문자 (30)로 구분되고, 라인은 문자 (31)로 구분되는 경우 I 파일이있다. 나는 열이 줄 바꿈 (\ n을)를 포함 할 수 있기 때문에 주로 이러한 구분 기호를 사용하여, 그래서 하이브의 기본 라인 경계는 우리에게 유용하지 않습니다.

나는 하이브에 라인 구분 기호를 변경하지만 아래의 오류가 발생하는 것을 시도했다 :

종료 LINES는 지금 개행 '\ n을'을 지원합니다.

어떠한 제안?

SerDe 작동 할 수 사용자 정의 쓰기? 새 버전에서 하이브에서이 기능을 향상시키기 위해 어떤 계획이 있나요?

감사

해결법

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

    1.이 도움이, 또는 가장 좋은 대답이지만, 우리는 'textinputformat.record.delimiter'지도를 설정하는 것입니다 일을 결국 어떻게이 문제에 직면했을 때 / 사용되는 값으로 자바 속성을 줄 확실하지합니다. 우리의 경우는 문자열 "{EOL}", 그러나 모든 실제적인 목적을 위해 고유 한 문자열이 될 수 있습니다.

    이 도움이, 또는 가장 좋은 대답이지만, 우리는 'textinputformat.record.delimiter'지도를 설정하는 것입니다 일을 결국 어떻게이 문제에 직면했을 때 / 사용되는 값으로 자바 속성을 줄 확실하지합니다. 우리의 경우는 문자열 "{EOL}", 그러나 모든 실제적인 목적을 위해 고유 한 문자열이 될 수 있습니다.

    우리는 우리가 올바르게 필드를 철수 할 수 우리의 직선 쉘이 설정합니다. 우리가 이런 짓을하면 우리가 {EOL} 라인 경계를 설정하는 모든 사용자에게 설명해야하고, 사용자의 동생 않았다, 그래서 우리는 가능한 한 빨리 브로에 데이터를 변환 주목해야한다.

    set textinputformat.record.delimiter={EOL};
    

    여기에 전체 예입니다.

    #example CSV data (fields broken by '^' and end of lines broken by the String '{EOL}'
    
    ID^TEXT
    11111^Some THings WIth 
    New Lines in THem{EOL}11112^Some Other THings..,?{EOL}
    111113^Some crazy thin
    gs
    
    just crazy{EOL}11114^And Some Normal THings.
    
    #here is the CSV table we laid on top of the data
    CREATE EXTERNAL TABLE CRAZY_DATA_CSV
    (
    ID STRING,
    TEXT STRING
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\136'
    STORED AS TEXTFILE
    LOCATION '/archive/CRAZY_DATA_CSV'
    TBLPROPERTIES('skip.header.line.count'='1');
    
    #here is the Avro table which we'll migrate into below.
    CREATE EXTERNAL TABLE CRAZY_DATA_AVRO
    (
    ID STRING,
    TEXT STRING
    )
    STORED AS AVRO
    LOCATION '/archive/CRAZY_DATA_AVRO'
    TBLPROPERTIES ('avro.schema.url'='hdfs://nameservice/archive/avro_schemas/CRAZY_DATA.avsc');
    
    #And finally, the magic is here.  We set the custom delimiter and import into our Avro table.
    set textinputformat.record.delimiter={EOL};
    INSERT INTO TABLE CRAZY_DATA_AVRO SELECT * from CRAZY_DATA_CSV;
    
  2. ==============================

    2.문자가 \ n 연구 \ 001 열에서 제거 \ 그래서 나는 Sqoop을의 추출물 --hive - delims-교체 ''중 옵션을 사용하여 그것을 밖으로 일했다.

    문자가 \ n 연구 \ 001 열에서 제거 \ 그래서 나는 Sqoop을의 추출물 --hive - delims-교체 ''중 옵션을 사용하여 그것을 밖으로 일했다.

  3. from https://stackoverflow.com/questions/27583736/lines-terminated-by-only-supports-newline-n-right-now by cc-by-sa and MIT license