【问题标题】:How to call a hive UDF written in Java using Pyspark from Hive Context如何使用 Hive 上下文中的 Pyspark 调用用 Java 编写的 Hive UDF
【发布时间】:2016-07-20 21:53:02
【问题描述】:

我在 hive 中使用 getLastProcessedVal2 UDF 从表中获取最新的分区。此 UDF 是用 java 编写的。我想使用来自 pyspark 的相同 UDF 使用 hive 上下文。

dfsql_sel_nxt_batch_id_ini=sqlContext.sql(''' select l4_xxxx_seee.**getLastProcessedVal2**("/data/l4/work/hive/l4__stge/proctl_stg","APP_AMLMKTE_L1","L1_AMLMKT_MDWE","TRE_EXTION","2.1")''')

错误:

错误 exec.FunctionRegistry:无法加载 UDF 类: java.lang.ClassNotFoundException:

【问题讨论】:

    标签: hadoop apache-spark pyspark apache-spark-sql


    【解决方案1】:

    pyspark shell 启动为:

    pyspark --jars /path/to.udf.jar <all-other-param>

    使用--jars 选项提交您的 pyspark 作业:

    spark-submit --jars /path/to/udf.jar <all-other-param>

    【讨论】:

      【解决方案2】:

      您可以使用SQLContext 方法udf 注册该用户定义的函数,在那里您可以看到您必须传递一个字符串作为第一个参数,它将代表您使用udf 时的名称SQL查询。

      例如

      sqlContext.udf().register("slen",
             (String arg1) -> arg1.length(),
             DataTypes.IntegerType);
      
      sqlContext.sql("SELECT slen(name) FROM user").show();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-27
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多