左填充猪中的一根绳子

2023-12-08

我想用 0-s 填充字符串数据类型字段。有什么办法可以做到这一点吗?我需要有固定长度(40)值。

提前致谢, 千里眼


零的数量需要根据剩余字符串的长度动态生成,所以我认为这在本地猪中是不可能的。
这在 UDF 中是很有可能的。

输入.txt

11111
222222222
33
org.apache.hadoop.util.NativeCodeLoader
apachepig

Pig脚本:

REGISTER leftformat.jar;

A = LOAD 'input.txt' USING PigStorage() AS(f1:chararray);
B = FOREACH A GENERATE format.LEFTPAD(f1);
DUMP B;

Output:

(0000000000000000000000000000000000011111)
(0000000000000000000000000000000222222222)
(0000000000000000000000000000000000000033)
(0org.apache.hadoop.util.NativeCodeLoader)
(0000000000000000000000000000000apachepig)

UDF代码:下面的java类文件被编译并生成为左格式.jar
LEFTPAD.java

package format;
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;

public class LEFTPAD extends EvalFunc<String> {
@Override
public String exec(Tuple arg) throws IOException {
       try
        {
            String input = (String)arg.get(0);
            return StringUtils.leftPad(input, 40, "0");
        }
        catch(Exception e)
        {
            throw new IOException("Caught exception while processing the input row ", e);
        }
    }
}

UPDATE:

1.Download 4 jar files from the below link(apache-commons-lang.jar,piggybank.jar, pig-0.11.0.jar and hadoop-common-2.6.0-cdh5.4.5)
http://www.java2s.com/Code/Jar/a/Downloadapachecommonslangjar.htm
http://www.java2s.com/Code/Jar/p/Downloadpiggybankjar.htm
http://www.java2s.com/Code/Jar/p/Downloadpig0110jar.htm

2. Set all the 3 jar files to your class path
  >> export CLASSPATH=/tmp/pig-0.11.1.jar:/tmp/piggybank.jar:/tmp/apache-commons-lang.jar

3. Create directory name format 
    >>mkdir format

4. Compile your LEFTPAD.java and make sure all the three jars are included in the class path otherwise compilation issue will come
    >>javac LEFTPAD.java

5. Move the class file to format folder
    >>mv  LEFTPAD.class format

6. Create jar file name leftformat.jar
    >>jar -cf leftformat.jar format/

7. jar file will be created, include into your pig script

Example from command line:
$ mkdir format
$ javac LEFTPAD.java 
$ mv LEFTPAD.class format/
$ jar -cf leftformat.jar format/
$ ls
LEFTPAD.java    format      input.txt   leftformat.jar  script.pig
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

左填充猪中的一根绳子 的相关文章

  • Apache Pig:使用 hadoop fs -text 加载显示正常的文件

    我有名为 part r 000 0 9 0 9 的文件 其中包含制表符分隔的字段 我可以使用查看它们hadoop fs text part r 00000但无法使用 Pig 加载它们 我尝试过的 x load part r 00000 du
  • Pig 条件运算符

    考虑下面的关系 test LOAD input USING PigStorage as a chararray b chararray 有没有办法达到以下效果 if b 1 a abc else if b 2 a xyz else reta
  • 左填充猪中的一根绳子

    我想用 0 s 填充字符串数据类型字段 有什么办法可以做到这一点吗 我需要有固定长度 40 值 提前致谢 千里眼 零的数量需要根据剩余字符串的长度动态生成 所以我认为这在本地猪中是不可能的 这在 UDF 中是很有可能的 输入 txt 111
  • Pig、Cassandra 和 DataStax 拆分控制

    我一直在使用 Pig 和我的 Cassandra 数据来完成各种令人惊奇的分组壮举 而这些壮举几乎不可能用命令式的方式编写 我正在使用 DataStax 的 Hadoop 和 Cassandra 集成 我不得不说它令人印象深刻 向那些家伙致
  • 从其他 Pig 脚本调用 Pig Latin 脚本

    我有一个关于 PIG Latin 的问题 有什么方法可以从另一个猪脚本中调用某个猪脚本吗 我知道可以运行用户定义的函数 UDF 例如 REGISTER myudfs jar A LOAD student data AS name chara
  • 将 IN 子句与 PIG FILTER 结合使用

    PIG 支持 IN 子句吗 filtered FILTER bba BY reason not in a b c d 或者我应该把它分成多个 OR Thanks 您可以使用 Apache DataFu 中的以下 udf 代替 这将帮助您避免
  • PIG UDF 处理多行元组拆分为不同的映射器

    我有一个文件 其中每个元组跨越多行 例如 START name Jim phone 2128789283 address 56 2nd street New York USA END START name Tom phone 6308789
  • Pig 本地模式、组或 join = java.lang.OutOfMemoryError: Java 堆空间

    Using Apache Pig 版本 0 10 1 21 报道 CentOS 版本 6 3 最终版 jdk1 6 0 31 Virtualbox 上的 Hortonworks Sandbox v1 2 具有 3 5 GB RAM cat
  • 将行值聚合到列中

    我有这样的数据 2013 11 localhost kern 2013 11 localhost kern 2013 11 192 168 0 59 daemon 2013 12 localhost kern 2013 12 localho
  • Pig 和 Hive 之间的区别?为什么两者都有? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的背景 进入 Hadoop 世界已经 4 周了 使用 Cloudera 的 Hadoop VM 涉足 Hive Pig 和 Hadoop 读过
  • 注册的elephantbird仍然显示错误2998

    grunt gt register home piyush Desktop pro json simple 1 1 1 jar grunt gt register home piyush Desktop pro elephant bird
  • 从 Java 应用程序中执行 Pig

    是否可以在 Java 应用程序中运行 Apache Pig 作业 而无需分叉外部进程 Pig 和 Hadoop 似乎都是用 Java 编写的 但并不真正提供 Java API 我宁愿在 Java Spring 应用程序中使用这些工具 而不是
  • strsplit 问题 - Pig

    我有以下元组 H1 我想将其 0 拆分为元组 但是我总是收到错误消息 DUMP H1 item32 item31 1 m FOREACH H1 GENERATE STRSPLIT 0 50 ERROR 1000 解析期间出错 第 1 行第
  • Pig Latin:从某个日期范围加载多个文件(目录结构的一部分)

    我有以下场景 小猪版本使用0 70 HDFS 目录结构示例 user training test 20100810
  • 将原始 JSON 加载到 Pig 中

    我有一个文件 其中每一行都是一个 JSON 对象 实际上 它是 stackoverflow 的转储 我想尽可能轻松地将其加载到 Apache Pig 中 但我无法弄清楚如何告诉 Pig 输入格式是什么 这是一个条目的示例 id oid 50
  • Hive 和 PIG/Grunt shell 挂在 cygwin 上

    我在 Windows 7 机器 32 位 上以本地模式运行 Hadoop 我已将 HIVE PIG Hadoop Java6 全部安装在 C 驱动器上 我使用的 Cygwin 版本 2 819 我已将 C 安装在 cygwin 上 我可以从
  • Pig - 使用正则表达式解析字符串

    我被困在 Pig 中的字符串解析上 我查看了周围的文档regex extract and regex extract all并希望使用其中一项功能 我有文件 logs test log cat logs test log user 2425
  • 猪如何过滤不同的对(对)

    我是猪的新手 我有一个 Pig 脚本 它在两个元素之间生成制表符分隔的对 每行一对 例如 John Paul Tom Nik Mark Bill Tom Nik Paul John 我需要过滤掉重复的组合 如果我使用 DISTINCT 我会
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • 逃离 Pig 中的美元符号?

    这在 0 9 2 中不是问题 但在 0 10 中 当我尝试访问地图中带有美元符号的键时 我会遇到没有定义变量的错误 具体来说 blah FOREACH meh GENERATE source json post id id AS post

随机推荐

  • 使用 JavaScript 检测 NPAPI 支持

    如何从 JavaScript 检测浏览器是否支持 NPAPI 并非所有人都这样做 虽然我可以依赖用户代理 但如果存在的话 我宁愿采用一种更可靠的方式来实现 不幸的是 我无法简单地检测我的插件是否已加载 因为该插件可能尚未安装在支持的浏览器上
  • Playframework - Eclipse 无法检测到新模板[重复]

    这个问题在这里已经有答案了 可能的重复 如何让Eclipse看到Play中的变化 编译模板 我正在迈出 Play 的第一步 框架和我遇到了一些问题 我可以毫无问题地创建和消除一个项目 现在 如果我添加一个新视图 例如 sometest sc
  • 登录 Azure Web 应用程序失败,并显示“AADSTS50079:用户需要使用多重身份验证”

    我们有一个 Azure Web 应用程序 它通过 Azure 多因素身份验证进行身份验证并访问 Graph API 和 Power BI 我们已经设置了 Azure 应用程序注册所需的权限 我们使用 Redis 缓存将令牌详细信息存储在 N
  • Yii 2.0 Restful Web 服务 API

    有人使用 Yii 2 0 beta 中集成的 RESTful Web 服务吗 官方的说明文档看起来很简单 但对我来说不起作用 我正在使用基本模板 使用 gii 模块创建一个简单的 类别 模型扩展ActiveRecord 然后我创建了Cate
  • Ansible:如何增加IP地址?

    我将一个变量传递给 Ansible extra vars lan 10 10 10 1 我现在需要增加这个 IP 地址 以便最后一个八位字节是 2所以它将等于10 10 10 2 在 Ansible 中如何实现这一点 从 Ansible 2
  • SQL WHERE 子句中的加号是什么意思 (WHERE + userName = SYSTEM_USER)

    我一直在试图找到 where 子句中加号的含义 有人对此有什么想法吗 被卡住了一点 查询本身非常简单 无论有或没有加号 其工作方式都类似 我想删除它 除非它的存在是有原因的 SELECT userID from tblUser WHERE
  • 如何根据嵌入数组过滤文档?

    审核后这一页 特别是这个查询 db scores find results elemMatch gte 80 lt 85 我使用了以下导入 import static com mongodb client model Filters and
  • 将重载指针传递给成员函数信号作为 QObject::connect 的参数[重复]

    这个问题在这里已经有答案了 在 Qt 中 如果信号没有过载 它可以像这样传递给 connect 方法 QObject connect comboBox QComboBox currentTextChanged gt void 但如果信号过载
  • 如何在Python中获取列表中出现频率最高的10个字符串

    我有一个包含 93 个不同字符串的列表 我需要找到 10 个最频繁出现的字符串 并且返回必须按从最频繁到最不频繁的顺序排列 mylist and beware twas all all and and and and and and and
  • 半正矢公式中的连接运算

    我正在 PHP 中实现 Haversine 公式 如下所示 result mysqli query mysqli SELECT 6371 acos cos radians lat cos radians latitude cos radia
  • 新添加的元素 $.each 和 events

    我已经阅读了很多帖子 each并新增了元素 事件附件 StackOverflow 上当前有关此主题的许多问题似乎对我不起作用 on 通常推荐 因为它允许我们附加新元素并且仍然维护单个事件侦听器 处理程序 在我当前的代码中 1 input t
  • 检测可穿戴设备何时与 Android 手机连接/断开连接

    Pebble 手表有一个 Intent 当 Pebble 连接 断开连接时会全局发送 这允许手机应用程序知道手表是否已连接 我已进行搜索 但无法找到有关 Android Wear 类似功能的信息 如何知道可穿戴设备是否已连接到手机 是否可以
  • 生成 Linkedin 访问令牌

    我一直在尝试使用简单的 REST 客户端以及 Mozilla 的 REST 插件 我正进入 状态 HTTP 1 1 401 未经授权 响应 正文中的 error unauthorized client error description 客
  • .NET,每分钟都有事件(每分钟)。计时器是最好的选择吗?

    我想使用 C 在 Windows 窗体应用程序中每分钟 按时钟 做一些事情 我只是想知道最好的方法是什么 我可以使用计时器并将其间隔设置为 60000 但要让它按分钟运行 我必须精确地按分钟启用它 这不太可行 我可以使用计时器并将其间隔设置
  • java.lang.SecurityException:权限拒绝:实现内容提供程序时打开提供程序

    我有问题 我尝试在我的消费者应用程序中实现内容提供程序 这是我来自应用程序 A 提供商 的 Android 清单
  • 以相反顺序打印 bash 参数

    我必须编写一个脚本 它将接受所有参数并反向打印它们 我已经提出了解决方案 但发现它非常糟糕 你有更聪明的主意吗 bin sh gt tekst txt for i in do echo i cat tekst txt gt temp mv
  • spring 3.0 MVC 似乎忽略 messages.properties

    Spring 3 0 MVC 首先 我没有找到任何有关 messages properties 的文档泉源我在各种论坛上发现了有关覆盖错误消息的所有内容 如果有人能参考 messages properties 的记录位置 那就太棒了 也许
  • MVC 3 和 DRY 自定义验证

    除非我遗漏了一些东西 这很有可能 否则在我看来 自定义验证总是违反 DRY 的 在我见过的所有示例中 即使使用 MVC 3 引入的全新非侵入式客户端验证 我们也必须为服务器端验证创建 NET 代码 并为客户端验证创建 jQuery 或 Ja
  • 我应该使用 HTML5 和 CSS3 吗?

    我是一个想要了解最新网络技术的人 但也很感激很多人仍然使用 IE6 7 8 如果一半内容在大多数浏览器上都无法显示 这是浪费代码 时间吗 这只是使用不同样式表的情况 还是只使用一个样式表 如果浏览器不支持文本阴影 那就搞砸了 他们可以看到它
  • 左填充猪中的一根绳子

    我想用 0 s 填充字符串数据类型字段 有什么办法可以做到这一点吗 我需要有固定长度 40 值 提前致谢 千里眼 零的数量需要根据剩余字符串的长度动态生成 所以我认为这在本地猪中是不可能的 这在 UDF 中是很有可能的 输入 txt 111