版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
自定義表生成函數(shù)表生成函數(shù)概述自定義表生成函數(shù)使用自定義表生成函數(shù)01
表生成函數(shù)概述表生成函數(shù)概述UDTF,是UserDefinedTable-GeneratingFunctions,一眼看上去,貌似是用戶自定義生成表函數(shù),這個生成表不應(yīng)該理解為生成了一個HQLTable,貌似更應(yīng)該理解為生成了類似關(guān)系表的二維行數(shù)據(jù)集。
什么是UDTF表生成函數(shù)概述繼承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF。實現(xiàn)initialize,process,close三個方法如何實現(xiàn)UDTFUDTF首先會調(diào)用initialize方法,此方法返回UDTF的返回行的信息(返回個數(shù),類型)。初始化完成后,會調(diào)用process方法,對傳入的參數(shù)進行處理,可以通過forword()方法把結(jié)果返回。最后close()方法調(diào)用,對需要清理的方法進行清理。02
自定義表生成函數(shù)自定義表生成函數(shù)實現(xiàn)代碼:public
class
ExplodeMap
extends
GenericUDTF
{//進行清理
@Override
public
void
close()
throws
HiveException
{
//
TODO
Auto-generated
method
stub
}
//initialize,process方法}
自定義表生成函數(shù)
@Override
public
StructObjectInspector
initialize(ObjectInspector[]
args)
throws
UDFArgumentException
{
if
(args.length
!=
1)
{
throw
new
UDFArgumentLengthException("ExplodeMap
takes
only
one
argument");
}
if
(args[0].getCategory()
!=
ObjectInspector.Category.PRIMITIVE)
{
throw
new
UDFArgumentException("ExplodeMap
takes
string
as
a
parameter");
}
自定義表生成函數(shù)
ArrayList<String>
fieldNames
=
new
ArrayList<String>();
ArrayList<ObjectInspector>
fieldOIs
=
new
ArrayList<ObjectInspector>();
fieldNames.add("col1");
fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
fieldNames.add("col2");
fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);
return
ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames,
fieldOIs);
}
自定義表生成函數(shù)
public
void
process(Object[]
args)
throws
HiveException
{
String
input
=
args[0].toString();
String[]
test
=
input.split(";");
for
(int
i
=
0;
i
<
test.length;
i++)
{
try
{
String[]
result
=
test[i].split(":");
forward(result);
}
catch
(Exception
e)
{
continue;
}
}
}
03
使用自定義表生成函數(shù)使用UDTF函數(shù)1、在select中使用UDTF:select
explode_map(properties)
as
(col1,col2)
from
my_table
不可以添加其他字段使用:selecta,explode_map(properties)as(col1,col2)frommy_table不可以嵌套調(diào)用:selectexplode_map(explode_map(properties))frommy_table不可以和groupby/clusterby/distributeby/sortby一起使用:selectexplode_map(properties)as(col1,col2)fromsrcgroupbycol1,col2使用UDTF函數(shù)2、結(jié)合lateralview使用select
src.id,
mytable.col1,
mytable.col2
from
src
lateral
view
e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人養(yǎng)老金投資管理合同4篇
- 2025版專業(yè)舞蹈鞋訂購與租賃合同3篇
- 2025版木質(zhì)墻板供貨與安裝服務(wù)合同4篇
- 2025年度城市軌道交通建設(shè)項目工程總承包合同4篇
- 2025版土地儲備土地使用權(quán)流轉(zhuǎn)合同3篇
- 五金行業(yè)電子商務(wù)應(yīng)用考核試卷
- 安徽省黃山市高三第一次質(zhì)量檢測語文試卷(含答案)
- 2025版升級版土方工程勞務(wù)承包合同范本2篇
- 2025版危險化學品運輸安全責任合同3篇
- 二零二五版海運出口運輸代理合同貨物跟蹤查詢協(xié)議3篇
- 無人化農(nóng)場項目可行性研究報告
- 《如何存款最合算》課件
- 社區(qū)團支部工作計劃
- 拖欠工程款上訪信范文
- 2024屆上海市金山區(qū)高三下學期二模英語試題(原卷版)
- 《wifi協(xié)議文庫》課件
- 2025年新高考語文復習 文言文速讀技巧 考情分析及備考策略
- 2024年??谑羞x調(diào)生考試(行政職業(yè)能力測驗)綜合能力測試題及答案1套
- 一年級下冊數(shù)學口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號發(fā)射的激光武器設(shè)計
評論
0/150
提交評論