hive 使用php脚本来完成map/reduce
hive sql有个比较强大的功能就是可以使用外界脚本来完成map/reduce。用法如下:
TRANSFORM(….) USING ‘….’ AS (….)。
USING里面可以使用php脚本来处理,具体使用方法看下面这个例子。
①、建一个表:
<code>hive> CREATE TABLE <span>`member`</span>( > <span>`id`</span><span>int</span>, > <span>`user_name`</span><span>string</span>, > <span>`passwd`</span><span>string</span> > ) > row <span>format</span> delimited > fields terminated by <span>"\t"</span><span>//这句很必要,不然下面的文件导入会导致所有的值都变成null </span> > stored as textfile;</code>
②、准备如下数据 /tmp/member.dat
<code>1 zhangsan zs1024 2 lisi ls1991 3 wangwu ww2001 4 liumang lm1234 5 linxing lx1990</code>
③、导入数据
<code>hive> <span>load</span> data <span>local</span> inpath <span>'/tmp/member.dat'</span> into <span>table</span> member;</code>
可以看到:
<code>hive> <span>select</span> * <span>from</span> member; OK <span>1</span> zhangsan zs1024 <span>2</span> lisi ls1991 <span>3</span> wangwu ww2001 <span>4</span> liumang lm1234 <span>5</span> linxing lx1990</code>
数据已经准备好了 ,现在我们相对第三列做一次md5加密。我们使用php脚本来处理,php脚本(/tmp/changePasswd.php)代码如下:
<code><span><span><?php </span><span>while</span>(!feof(STDIN)){ <span>$line</span> = rtrim(fgets(STDIN), <span>"\n"</span>); <span>//逐行读取</span><span>if</span> (<span>empty</span>(<span>$line</span>)) <span>continue</span>; <span>//空,跳出当次循环</span><span>$data</span> = explode(<span>"\t"</span>, <span>$line</span>); <span>//将切分出来的数组保存起来,下面判断使用</span><span>foreach</span>(<span>$data</span><span>as</span> &<span>$val</span>){ <span>$val</span> = md5(<span>$val</span>); } <span>unset</span>(<span>$val</span>); <span>echo</span> implode(<span>"\t"</span>, <span>$data</span>) . <span>"\n"</span>; }</span></span></code>
④、将php脚本加入到hive中。
<code>hive> <span>add</span> file /tmp/changePasswd<span>.php</span><span>;</span></code>
⑤、使用php脚本来执行map/reduce
<code>hive> insert overwrite table member > select TRANSFORM(<span>`i</span>d<span>`,</span><span>`u</span>ser_name<span>`,</span><span>`p</span>asswd<span>`)</span> using <span>"/usr/bin/php changePasswd.php"</span> > as (<span>`i</span>d<span>`,</span><span>`u</span>ser_name<span>`,</span><span>`p</span>asswd<span>`)</span> from member<span>;</span></code>
最后,我们可以看到,passwd那一列的数据已经改变:
<code>hive> <span>select</span> * <span>from</span> member; OK <span>1</span> zhangsan d03eed89429cc3006cc279322c2800c5 <span>2</span> lisi <span>063401506</span>c9d9f0e49a706e3779b7428 <span>3</span> wangwu ac5a8109dbbb46c9f69ffd5fc93c11f8 <span>4</span> liumang fda8b97fd723bdbf6a754812b5ecec27 <span>5</span> linxing <span>4035378</span>ace8936e93d95aa77e7e224d4</code>
版权声明:本文为博主原创文章,转载请注明出处。
以上就介绍了hive 使用php脚本来完成map/reduce,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
