2017-05-02 2 views
1

Ich habe HDInsight-Cluster auf Azure und .csv Dateien in hdfs (Azure-Speicher).Wie speichert man die Schweineausgabe in die Bienenstock-Tabelle?

Mit Apache-Pig möchte ich diese Dateien verarbeiten und die Ausgabe in einer Hive-Tabelle speichern. Um dies zu erreichen ich folgendes Skript geschrieben haben:

A = LOAD '/test/input/t12007.csv' USING PigStorage(',') AS (year:chararray,ArrTime:chararray,DeptTime:chararray); 
describe A; 
dump A; 
store A into 'testdb.tbl3' using org.apache.hive.hcatalog.pig.HCatStorer(); 

Dieses Skript lädt die Datei erfolgreich, beschreiben die Struktur und es zeigt auch die Daten-Dump verwenden, aber während Speicherbefehl führt sie führt den folgenden Fehler:

2017-05-02 06:18:41,476 [main] ERROR org.apache.pig.PigServer - exception during parsing: Error during parsing. Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
Failed to parse: Pig script failed to parse: <file script.pig, line 4, column 33> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
Caused by: <file script.pig, line 4, column 33> pig script failed to validate: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
2017-05-02 06:18:41,484 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve org.apache.hive.hcatalog.pig.HCatStorer using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 
+0

versuchen Sie, Ihr Skript: Schwein -useHCatalog your_scriptname.pig –

+0

ich das Skript in Ambari bin Ausführung. Ich habe das Argument -useHCatalog während der Ausführung des Skripts hinzugefügt. –

Antwort

0

pig -useHCatalog

Vom Schwein HCatalog documentation

Lauf Schwein mit HCatalog

Schwein nimmt nicht automatisch HCatalog Gläser. Um die erforderlichen Gläser einzubringen, können Sie entweder ein Flag im Pig-Befehl verwenden oder die Umgebungsvariablen PIG_CLASSPATH und PIG_OPTS wie unten beschrieben einstellen. Um in den entsprechenden Gläsern zu bringen für mit HCatalog arbeiten, einfach schließen das folgende Flag in Ihrem Skript:

Alternative Art und Weise:

Geben Sie den Speicherort des HCatalog Glas und fügen Sie eine REGISTER Anweisung mit dem Weg der jar an den Anfang Ihres Skripts wie unten.

REGISTER /usr/username/client/lib/hive-hcatalog-core-1.2.1.2.3.0.0-2557.jar; 

Ihr Pfad kann je nach Installation in Ihrem Cluster abweichen. Sie können diesen jar Position mit dem Befehl finden: locate *hcatalog-core*

HCatStorer

HCatStorer mit Pig-Skripten verwendet wird, um Daten zu HCatalog-managed Tabellen zu schreiben.

Usage

HCatStorer wird über einen Pig store Anweisung abgerufen.

STORE A INTO 'tablename' 
    USING org.apache.hive.hcatalog.pig.HCatStorer(); 
+0

ich führe das Skript in ambari aus. Ich habe -useHCatalog als Argument hinzugefügt. Trotzdem gibt es Fehler. –

+0

Ist Ihre Hive-Tabelle vorhanden? Wenn nicht, müssen Sie zuerst die Tabelle erstellen. –

+0

Ich habe die Antwort mit einer alternativen Option aktualisiert. –

Verwandte Themen