如何在创建hive表格的python代码中导入外部文件
业务场景大概是这样的,我要对用户博文进行分词(这个步骤可以看这篇文章如何在hive调用python的时候使用第三方不存在的库-how to use external python library in hadoop)
然后在对每条博文进行分词之后呢,我需要做的就是对分词之后的结果去除停用词,但是在公司hadoop集群是是没有我们所需要的停用词文件的,其实解决这个问题很类似我上面列出来的文章,就是如果在hive的自定义函数中使用我们自己的文件或者包
解决办法大概是这样:
首先在shell脚本中加入 add file ./stop_word.txt;
function zida(){
cat <<EOF
add file ./jieba.mod;
add file ./stop_word.txt;
add file ./zida.py;
select transform(tmp.*) using 'python zida.py test'
AS uid,bowen
FROM(
select * from hive_table)tmp
EOF
}
hive -e "`zida`"
echo "zida"
然后在python脚本中加入对应代码:
import io
stopwords = [line.strip() for line in io.open('stop_word.txt','r',encoding='utf-8').readlines()]
在这个办法中,会出现报错,原因就是公司python运行环境比较老旧,所以在读取中文文本的时候会出现问题:
代码是这样的
stopwords = [line.strip() for line in open('stop_word.txt','r',encoding='utf-8').readlines()]
出现报错:
'encoding' is an invalid keyword argument for this function
解决办法如下:
import io
stopwords = [line.strip() for line in io.open('stop_word.txt','r',encoding='utf-8').readlines()]
这个问题的解决是参考的这里
参考链接:
关于这个方法一个很好的总结-hive+python数据分析入门
Accessing external file in Python UDF
如何在创建hive表格的python代码中导入外部文件的更多相关文章
- hivepython 同时读入python 且python脚本中处理外部文件txt
找出表test_gid2中每个gid的安装列表中含有文件pkgs中的pkg名字的数据行. pkgs文件要与python脚本放在一个路径下. 用 transform 的传入数据的时候,不管原文件分隔 ...
- Kivy A to Z -- 怎样从python代码中直接訪问Android的Service
在Kivy中,通过pyjnius扩展能够间接调用Java代码,而pyjnius利用的是Java的反射机制.可是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了b ...
- pycharm运行Pytest,有没有将Pytest写入Python代码中的区别
初学pytest. 将pytest写进Python代码中 不同运行方式都可正常运行 =======================**********************========= ...
- python代码中判断版本
在python代码中判断python版本: if sys.version_info < (3, 0): lib.make_flows.argtypes = [c_char_p, c_char_p ...
- Python包中 __init__.py文件的作用
原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包 ...
- Eclipse在已创建的project中导入其他文件
Eclipse在已创建的project中导入其他文件 前两天被同事问到,如何通过不拷贝源文件的方式,在之前已经创建好的project中直接导入其他目录下的文件, 整理了一下,将目前所知道的eclips ...
- 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)
如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...
- python包中__init__.py文件的作用
python包中__init__.py文件的作用 __init__.py文件最常用的作用是标识一个文件夹是一个 python包. __init__.py文件的另一个作用是定义模糊导入时要导入的内容. ...
- Android 在代码中安装 APK 文件
废话不说,上代码 private void install(String filePath) { Log.i(TAG, "开始执行安装: " + filePath); File a ...
随机推荐
- xml解析demo使用
package lianxi; import java.io.FileOutputStream;import java.io.OutputStreamWriter; import javax.xml. ...
- Java笔记 —— this 关键字
Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...
- 第四章 T-SQL编程
1.前言->此T-SQL编程是基于sql server开发环境->关键字:T-SQL编程:游标:视图和索引 2.T-SQL编程基础->标识符:常规标识符必须以汉字.字母.下划线_.@ ...
- Windows server R2 2008上部署gogs git
所需的环境 1. 安装mysql 安装路径:F:\MySQL Server 5.7 2. 安装gogs ...
- April 13 2017 Week 15 Thursday
Happiness takes no account of time. 幸福不觉光阴过. Do you know the theory of relativity? If you know about ...
- java研发常见问题总结 1
1.java中所有类的父类是什么?他都有什么方法? Object类是所有类的直接或间接基类,如果一个类在声明时未继承基类,Java就默认其基类是Object,故Object被称为根类.该类位于java ...
- ERP和C4C中的function location
SAP ERP里的Functional Locations,下载到SAP Cloud for Customer后成为类型为'Functional Location'的Installation Poin ...
- paper-list
1.yolo-v1,yolo-v2,yolo-v3 2.ssd,focal loss,dssd 3.fast-rcnn,faster-rcnn,r-fcn,Light-Head R-CNN,R-FCN ...
- git中.gitignore 文件
现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹. 由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以 ...
- python第一章练习题
本章总节 练习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释 编译型:把源代码编译成机器语言的可执行文件,程序执行的时候执行可执行文件即可. 优点:程序执行不 ...