2016-10-27 3 views
1

Die Werte Null werden als '\ N' angezeigt, wenn eine externe Strukturtabelle abgefragt wird.Sqoop Import Nullzeichenfolge

Unten ist die Sqoop Importskript:

Sqoop Import -libjars /usr/lib/sqoop/lib/tdgssconfig.jar,/usr/lib/sqoop/lib/terajdbc4.jar -Dmapred.job .queue.name = xxxxxx \ --connect jdbc: Teradata: //xxx.xx.xxx.xx/DATABASE=$db,LOGMECH=LDAP --Verbindungsmanager org.apache.sqoop.teradata.TeradataConnManager \ - -username $ user --password $ PWD --query "

select col1, col2, col3 von $ db.xxx

wo \ $ BEDINGUNGEN" \ --null-Zeichenkette '\ N' --null-Nicht-Zeichenkette '\ N' \ --fields-terminiert von '\ t' --num-mappers 6 \ --split-by jobnummer \ --delete-Zielverzeichnis \ --target-dir $ hdfs_loc

Bitte raten, welche Änderung an das Skript durchgeführt werden sollte, so dass NULL-Werte als Nullen angezeigt werden, wenn die externe hive Tabelle abgefragt wird.

Antwort

4

Sathiyan- Unten meine Erkenntnisse nach vielen Versuchen

  1. If (Null-String) Eigenschaft nicht während Sqoop Import enthalten, dann NULL werden als [Leerzeichen für Integer-Spalten] und [Leerzeichen für String-Spalten] in HDFS gespeichert. 2. Wenn die HIVE Tabelle oben auf HDFS abgefragt wird, würden wir sehen, [NULL für Integer-Spalte] und [leer für String Spalten]
  2. Wenn die (--null-string '\N') Eigenschaft während Sqoop Import enthalten ist, dann NULLs sind gespeichert als ['\ N' für Integer- und String-Spalten].
  3. Wenn die HIVE Tabelle oben auf HDFS abgefragt wird, würde sehen wir [NULL für beide Integer- und String-Spalten nicht '\ N']
+0

Mit '--null-string' \ N''werden die null-non-string-Werte in HDFS als "null" geschrieben, aber Ihre Richtlinien haben es funktioniert :) Sie werden korrekt als Nullwerte gelesen. –

1

In Ihrem Sqoop Skript Sie --null-string '\N' --null-non-string '\N erwähnt, was bedeutet,

--null-string '\N' = The string to be written for a null value for string columns 

--null-non-string '\N' = The string to be written for a null value for non-string columns 
+0

Yup. So werden die Nullen in HDFS gespeichert. Aber wenn die Hive-Tabelle abgefragt wird, sollte NULL als tatsächliche Nullen angezeigt werden, nicht '\\ N' – Bagavathi

+0

Nein, was auch immer die Zeichenfolge, die Sie hier angeben, wird in HDFS gespeichert, was in HDFS gespeichert wird, spiegelt sich in Hive Abfrage. –

+0

funktioniert das? –