在scala中注册hive udf-java.net.malformedurexception:未知协议:s3

x33g5p2x  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(407)

我正在尝试在scala spark中注册一个udf,就像这样,在hive中注册下面的udf就可以了 create temporary function udf_parallax as 'com..edw.hww.etl.udf.parallax.ParallaxHiveHash' USING JAR 's3://bx-analytics-softwares/gdpr_hive_udfs/gdpr-hive-udfs-hadoop.jar' ```
val sparkSess = SparkSession.builder()
.appName("Opens")
.enableHiveSupport()
.config("set hive.exec.dynamic.partition.mode", "nonstrict").getOrCreate()
sparkSess.sql("""create temporary function udf_parallax as 'com.abc.edw.hww.etl.udf.parallax.ParallaxHiveHash' USING JAR 's3://bx-analytics-softwares/gdpr_hive_udfs/gdpr-hive-udfs-hadoop.jar'""");

我听到一个错误说 `Exception in thread "main" java.net.MalformedURLException: unknown protocol: s3` 想知道我是否要设置配置或其他东西,我刚刚开始学习。
感谢您的帮助。
8zzbczxx

8zzbczxx1#

为什么不将这个gdpr-hive-udfs-hadoop.jar作为外部jar添加到您的项目中,然后执行以下操作来注册udf:

val sqlContext = sparkSess.sqlContext
val udf_parallax = sqlContext.udf .register("udf_parallax", com.abc.edw.hww.etl.udf.parallax.ParallaxHiveHash _)

更新:
1.如果您的配置单元正在远程服务器上运行:

val sparkSession= SparkSession.builder()
                        .appName("Opens")
                        .config("hive.metastore.uris", "thrift://METASTORE:9083")
                        .config("set hive.exec.dynamic.partition.mode", "nonstrict")
                        .enableHiveSupport()
                        .getOrCreate()

sparkSession.sql("""create temporary function udf_parallax as 'com.abc.edw.hww.etl.udf.parallax.ParallaxHiveHash' USING JAR 's3://bx-analytics-softwares/gdpr_hive_udfs/gdpr-hive-udfs-hadoop.jar'""");

2.如果配置单元未在远程服务器上运行:
将hive-site.xml从/hive/conf/目录复制到/spark/conf/目录,并创建您在问题中提到的sparksession

相关问题