IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> HIVE中替换UDF神器-- TRANSFORM()函数 -> 正文阅读

[大数据]HIVE中替换UDF神器-- TRANSFORM()函数

TRANSFORM()

在平时的hive开发中,虽然hive提供了一些比较丰富的内置函数,但是也不能完全的满足生产中的需要,对于一些逻辑,需要自定义UDF实现,但是又不想写UDF,还需要实现,就可以用TRANSFORM()方法

TRANSFORM()方法可以看作是从一个表中读取了一些字段,但是其中的一些字段需要做一些处理,那么就可以使用TRANSFORM函数,通过调用我们写好的处理脚本,处理这段逻辑,比如python脚本等等。

以HIVE官网中的一个例子为例讲解一下TRANSFORM函数的使用

比如需要对一个时间戳转换为是周几,就是输入一个时间戳,返回这个时间戳是周几。

TRANSFORM语法

select
  transform(column1, column2,...)
  using 'python xxx.py'
  as (column1, column2,...)
from
  tbl

简而言之,就是从一个表中读取字段,用python脚本处理,然后输出新的字段。
那么python脚本怎么使用呢?
python中通过sys.stdin来获取输入的字段,然后通过循环处理每一行数据即可

for line in sys.stdin:
    xxx #处理逻辑
    print '\t'.join(column1, column2, ...)

处理起来很简单,借助python得天独厚的优点,可以很方便的处理复杂逻辑
根据HIVE官方提供的案例,看一下
传入字段,调用python脚本,处理,输出结果到hive表中

python脚本编写

将输入的参数由时间戳变为是周几输出

import sys
import datetime

for line in sys.stdin:
  line = line.strip()
  # 切割传入的参数
  userid, movieid, rating, unixtime = line.split('\t')
  # 处理时间戳变为周几
  weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
  # 拼接结果输出
  print '\t'.join([userid, movieid, rating, str(weekday)])

调用脚本

INSERT OVERWRITE TABLE u_data_new
SELECT
  -- 从u_data里面拿到的数据
  TRANSFORM (userid, movieid, rating, unixtime)
  -- 调用脚本处理传入参数
  USING 'python weekday_mapper.py'
  -- 输出到u_data_new的参数,将unixtime转变为了weekday
  AS (userid, movieid, rating, weekday)
FROM u_data;

注意:python脚本需要传入到集群内,调用时写上python脚本的路径,可以是集群的路径,也可以是hdfs的路径

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:53:18  更:2022-07-03 10:55:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 4:08:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码