我正在尝试像这样在Scala Spark中注册udf,其中在蜂巢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'
中注册以下udf可以正常工作
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
想知道是否必须在config或其他任何东西中进行设置,我才刚刚开始学习。
对此有任何帮助。
答案 0 :(得分:0)
为什么不将此 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 / 目录并创建<您在问题
中提到的strong> SparkSession