我正在尝试为HadoopHive编写一个UDF,用于解析用户代理。以下代码在我的本地机器上运行良好,但在Hadoop上我得到:org.apache.hadoop.hive.ql.metadata.HiveException:Unabletoexecutemethodpublicjava.lang.StringMyUDF.evaluate(java.lang.String)throwsorg.apache.hadoop.hive.ql.metadata.HiveExceptiononobjectMyUDF@64ca8bfbofclassMyUDFwitharguments{AllOccu
我看过文档here,但我承认我觉得它相当缺乏。我想知道是否有人可以给我收集有关将PythonUDF合并到Pig中的示例。特别是在Pig0.10之前,不存在bool类型,但是FILTER操作需要将结果解析为bool值。如果我没有最新版本?是否无法从Python访问Algebraic、Accumulator和Filter接口(interface)?我也不能访问分布式缓存吗?Store/Load函数呢? 最佳答案 PythonUDF非常有限。您不能使用Algebraic或Accumulator接口(interface),也不能用Pytho
我想编写一个可以接受常量参数的自定义UDF(UDAF/UDTF)。比如我要写一个函数MAX(COL,i),其中COL是求最大值的集合,i是位置(即i=1,求最大值,i=2,找到第二高等),使得Hive查询看起来像:SELECTMAX(value,2)FROMtable;这不仅适用于MAX,所以我需要一种能够执行此操作的通用方法,因此无法从已排序的集合中进行排序和选择。 最佳答案 您可以使用ConstantObjectInspectors获取作为参数传递的常量值。在GenericUDF的initialize()方法或GenericUD
当写一个UDF比方说一个EvalFunc时,是否可以传递一个配置文件properties=newProperties();properties.load(newFileInputStream("conf/config.properties"));在Hadoop模式下运行时?最好的,将 最佳答案 这是从HadoopDFS读取和写入文件的简单示例来自http://wiki.apache.org/hadoop/HadoopDfsReadWriteExample也许您可以在其中找到一些有用的代码来完成您的工作。以下是我的代码,它成功地在ha
我们一直在尝试创建一个简单的HiveUDF来屏蔽Hive表中的某些字段。我们正在使用一个外部文件(放在HDFS上)来抓取一段文本,以便对屏蔽过程进行加盐处理。看起来我们一切正常,但是当我们尝试创建外部函数时它抛出错误:org.apache.hive.service.cli.HiveSQLException:Errorwhileprocessingstatement:FAILED:ExecutionError,returncode-101fromorg.apache.hadoop.hive.ql.exec.FunctionTask.Couldnotinitializeclassco.co
我正在尝试从这里开始快速入门:http://datafu.incubator.apache.org/docs/datafu/getting-started.html我几乎尝试了所有方法,但我确定这一定是我的错。我已经试过了:导出PIG_HOME、CLASSPATH、PIG_CLASSPATH使用-cpdatafu-pig-incubating-1.3.0.jar启动pig在本地和hdfs中注册datafu-pig-incubating-1.3.0.jar=>都成功(至少没有显示错误)没有任何帮助在pig身上试试这个:registerdatafu-pig-incubating-1.3.0
我在配置单元中使用getLastProcessedVal2UDF从表中获取最新的分区。这个UDF是用java编写的。我想通过配置单元上下文使用来自pyspark的相同UDF。dfsql_sel_nxt_batch_id_ini=sqlContext.sql('''selectl4_xxxx_seee.**getLastProcessedVal2**("/data/l4/work/hive/l4__stge/proctl_stg","APP_AMLMKTE_L1","L1_AMLMKT_MDWE","TRE_EXTION","2.1")''')错误:ERRORexec.FunctionR
我是PIG和Hadoop的新手。我写了一个PIGUDF,它对String进行操作并返回一个字符串。我实际上使用了一个已经存在的jar中的类,它包含udf中的业务逻辑。类构造函数将2个文件名作为输入,用于构建一些用于处理输入的字典。如何让它在mapreduce模式下工作我尝试在pig本地模式下传递文件名它工作正常。但是我不知道如何让它在mapreduce模式下工作?分布式缓存能否解决问题?这是我的代码REGISTERtokenParser.jarREGISTERsampleudf.jar;DEFINETOKENPARSERcom.yahoo.sample.ParseToken('conf
我在一些数据节点上安装了R,可以编写Mapreduce作业以通过JRI调用R。接下来,为了通过配置单元查询调用R,我重写了GenericUDAFEvaluator中的终止方法并在那里创建Rengine对象。旧的mapred作业需要我执行-Dmapred.child.env="R_HOME=/usr/lib64/R"才能工作。当我在配置单元中执行此操作(通过setmapred.child.env="R_HOME=/usr/lib64/R";)然后运行查询时,作业在设置时失败。更一般地说,这是从hive成功的:selectcount(*)fromsome_tablelimit10;但这失败
在Hadoop中,我有一个看起来像这样的Reducer,用于将数据从先前的映射器转换为一系列非InputFormat兼容类型的文件。protectedvoidsetup(Contextcontext){LocalDatabaseld=newLocalDatabase("localFilePath");}protectedvoidreduce(BytesWritablekey,Textvalue,Contextcontext){ld.addValue(key,value)}protectedvoidcleanup(Contextcontext){saveLocalDatabaseInHD