小编use*_*635的帖子

使用Pig通过Java运行String

我有一个UDF jar,它通过Pig接收String作为输入.这个java文件在运行"硬编码"字符串(如此命令)时可以正常工作

B = foreach f generate URL_UDF.mathUDF('stack.overflow');
Run Code Online (Sandbox Code Playgroud)

会给我我期望的输出

我的问题是我试图从文本文件中获取信息并使用我的UDF.我加载一个文件,并希望在我已加载到UDF的文件中传递数据.

LoadData = load 'data.csv' using PigStorage(',');
f = foreach LoadData generate $0 as col0, $1 as chararray
Run Code Online (Sandbox Code Playgroud)

$ 1是我需要的列并且研究数据类型(http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#Data+Types)使用char数组.

然后我尝试使用以下命令B = foreach f generate URL_UDF.mathUDF($ 1);

将数据传递到无法说明的jar中

java.lang.ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)

如果任何人有任何解决方案,这将是伟大的.

我正在运行的java代码如下

package URL_UDF;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.pig.FilterFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.EvalFunc;
import org.apache.pig.PigWarning;
import org.apache.pig.data.Tuple;
import org.apache.commons.logging.Log;
import org.apache.*;

public class mathUDF extends EvalFunc<String> { …
Run Code Online (Sandbox Code Playgroud)

java apache-pig

2
推荐指数
1
解决办法
4549
查看次数

标签 统计

apache-pig ×1

java ×1