2016-05-18 21 views
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は単に構造体の配列です。

答えて

0

あなたはAS SELECTのCREATE TABLE使用して結果を保存することができます。

CREATE TABLE exploded_table AS 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; 
+0

をしかし、私は外部表 – HadoopAddict

+0

を探していますし、あなたがのALTER TABLE

を使用することができ、テーブルを作成した後、CTASは、外部表に – HadoopAddict

+1

をサポートしていません。 SET TBLPROPERTIES( 'EXTERNAL' = 'TRUE')(すべて首都またはそれは動作しません) –

関連する問題