0
ハイブ外部テーブルを作成しようとしていて、ラテラルビューエクスプロードを使用しようとしていますが、結果が正しいことがわかります。しかし、テーブルを作成した後で、私は を使わずにメインテーブルを照会したいと思っています。サイドビューの結果からハイブ外部テーブルを作成
マイコード:
ADD JAR wasb:///user/hivexmlserde-1.0.5.3.jar;
SET mapred.input.dir.recursive=true;
SET hive.mapred.supports.subdirectories=true;
DROP TABLE IF EXISTS losApplicantEmployer;
CREATE EXTERNAL TABLE losApplicantEmployer
(customer array<struct<customer_id:string, type:string>>, employer array<struct<employer_id:string,type:string,employer_name:string,years_employed:int,months_employed:int,create_date:string, update_date:string >>)
ROW FORMAT SERDE
'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES(
"column.xpath.customer" = "/LoanApplications/LoanApplication[@deal_type='REQUESTED']/LoanApplicationStates/LoanApplicationState/Customers/Customer",
"column.xpath.employer" = "/LoanApplications/LoanApplication[@deal_type='REQUESTED']/LoanApplicationStates/LoanApplicationState/Customers/Customer/Employers/Employer"
)
STORED AS INPUTFORMAT
'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'wasb://[email protected]/Safe/2016/05/12'
TBLPROPERTIES ("xmlinput.start"="<LoanApplications xmlns","xmlinput.end"="</LoanApplications>");
select exp_cust.customer_id, exp_cust.type, exp_emp.employer_id, exp_emp.type, exp_emp.employer_name, exp_emp.years_employed, exp_emp.months_employed, exp_emp.create_date, exp_emp.update_date
from losApplicantEmployer
lateral view explode(customer) exp_customer as exp_cust
lateral view explode(employer) exp_employer as exp_emp;
私はテーブルとして上記のコードの結果を保存したいです。私はそれをクエリに使用することができます。どのように私に教えてください?
結果を表示するたびに、横方向の爆発を使用したくありません。だから私は新しいテーブルに全体の結果を格納することが理想的であると感じました。テーブルlosApplicantEmployerは単に構造体の配列です。
をしかし、私は外部表 – HadoopAddict
を探していますし、あなたがのALTER TABLE
をサポートしていません。 SET TBLPROPERTIES( 'EXTERNAL' = 'TRUE')(すべて首都またはそれは動作しません) –
関連する問題