0

XML データ ファイルを HIVE テーブルにロードしているときに、次のエラー メッセージが表示されました。

FAILED: SemanticException 7:9 Input format must implement InputFormat. Error   encountered near token 'StoresXml'.  

XMLファイルをロードする方法は次のとおりです。

** テーブル StoresXml を作成します

   'CREATE EXTERNAL TABLE StoresXml (storexml string)
   STORED AS INPUTFORMAT 'org.apache.mahout.classifier.bayes.XmlInputFormat'
   OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION '/user/hive/warehouse/stores';'

** 場所 /user/hive/warehouse/stores は HDFS にあります。

load data inpath <local path where the xml file is stored> into table StoresXml;

さて、問題は、テーブル StoresXml から任意の列を選択すると、上記のエラーが発生することです。

それを手伝ってください.どこが間違っているのですか?

4

3 に答える 3

0

1)最初に、次のような単一列テーブルを作成する必要があります

CREATE TABLE xmlsample(xml string);

2) その後、ローカル/hdfs にデータをロードして、次のようにテーブルをハイブする必要があります。

LOAD DATA INPATH '---------' INTO TABLE XMLSAMPLE;

3) 次は、サンプルのXMLXPATHクエリのように , , を使用して..XPATH_ARRAYXPATH_STRING

于 2013-12-05T09:37:23.837 に答える
0

XML ファイルの xpath を使用して、この transactions.xml ファイルをハイブ テーブルにロードしました。 **XML ファイルのレコードを 1 行にまとめます。

terminal> cat /home/cloudera/Desktop/Test/Transactions_xml.xml | tr -d '&' | tr '\n' ' ' | tr '\r' ' ' | sed 's|</record>|</record>\n|g' | grep -v '^\s*$' > /home/cloudera/Desktop/trx_xml;

terminal> hadoop fs -put /home/cloudera/Desktop/trx_xml.xml  /user/cloudera/DataTest/Transactions_xml

hive>create table Transactions_xml1(xmldata string);

hive>load data inpath '/user/cloudera/DataTest/Transactions_xml' overwrite into table Transactions_xml1;

hive>create table Transactions_xml(trx_id int,account int,amount int);

hive>insert overwrite table Transactions_xml select xpath_int(xmldata,'record/Tid'),
xpath_int(xmldata,'record/AccounID'),
xpath_int(xmldata,'record/Amount') from Transactions_xml1;

これがお役に立てば幸いです。結果を教えてください。

于 2016-06-01T14:27:52.863 に答える