sparksql的transform如何使用
sparksql和hive都提供了transform方法,而且由于sparksql的抽象语法树复用了hive的原因,因此两者在用意上是一样的,都是提供一种UDF方式,因为在工作中不是每个人都非常了解数据开发的技术占,尤其是在注重运营的企业中多数人就不是技术出身,因此让这些人从头开发一个Java-UDF函数、经历注册、区分永久或临时函数、在学会使用,那将是一个大到可怕的沟通成本
所以sparksql和hive,提供了 transform 用来调用其他类库代码处理,以常见的Python类库为例语法如下
--加载python的执行环境,也可以通过提交任务时的 spark.yarn.dist.archives
add archive 'hdfs://jdk/pyspark.tar.gz#py';
add file 'hdfs://jars/testTransform.py';
selecttransform(*) --这里的 * 意味着所有字段都传递using 'py/bin/python testTransform.py' as (a) --这里就是调用你的python脚本 (a) 表示输出的字段名称from ( select 1 as a ) ;--下面就是正常的查询语句
python脚本中需要调用 sys 模块接收数据,如下脚本
import sysfor line in sys.stdin:cols = line.strip().split('\t')name = cols[0]#多个字段之间指标符分割print(name + '\t123\t444')