我们会对存储在hive表格中的数据基于每一行进行数据清理,统计,计算的工作,这个时候我们可以在hive中调用Python脚本对数据进行处理。
程序代码主要分成两个部分,一个hive脚本,一个是Python脚本,两者相互依赖。hive脚本有两个目的,首先是选择相应的数据(使用sql),然后将数据导入到python脚本中进行处理(使用transform)。python脚本目的是读取数据并进行相应的数据处理。读取数据的时候如果我们需要对数据进行多次处理我们一般使用sys.stdin.readlines(). 如果我们仅仅使用一次就好,我们直接按行使用sys.stdin。
Hive代码如下:
#首先我们创建一个表格用来存放被python脚本处理过的数据
function mk_dt(){
cat <
create table if not exists temp_data(uid string,value string)
row format delimited fields terminated by '\t'
location '/usr/documents/temp_data';
EOF
}
hive -e "`mk_dt`"
echo "mk_dt"
#随后我们将数据导入到python脚本处理
function process_data(){
cat <
add file ./temp_process_data.py;
insert overwrite table temp_data
select transform(tmp.*) using 'python temp_process_data.py processata'
as uid,value
from(
select * from basic_data
)tmp
EOF
}
hive -e "`process_data`"
echo "process_data"
Python代码如下:
#
import sys
def process_temp_data():
for line in sys.stdin: