java - Ngrams 在 Hive 中有效,但在 spark-shell (Scala) 中无效
问题描述
我真的陷入了我的问题,我在网上进行了广泛的搜索,但我找不到解决方案,而且我是 Spark-shell (Scala) 的新手。ngrams
通过以下命令,功能在 Hive 中工作得非常好:
select ngrams(split(name, '\\W+'), 2, 3) from mytable
它返回列“名称”的前 3 个二元组。当我通过这个命令在 spark-shell 中调用它时
val df = hiveContext.sql("select ngrams(split(name, '\\W+'), 2, 3) from mytable")
我得到了这些错误:
火花2
org.apache.spark.sql.AnalysisException: Undefined function: 'ngrams'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.
火花 1.6
org.apache.spark.sql.AnalysisException: No handler for udf class org.apache.hadoop.hive.ql.udf.generic.GenericUDAFnGrams
我也尝试了这些方法但没有成功:
- 我与 分开
split
,ngrams
即我先跑split
,再跑ngrams
。令人惊讶的是,split
工作正常,但ngrams
没有。 - 我试过
sqlContext.register.udf("ngrams", ngrams)
并收到:error: not found: value ngrams
我使用以下命令添加了 2 个不同的 Jar 文件版本(
hive-exec-1.2.0.jar
和):hive-exec-3.0.0.jar
spark-shell --jars /hive-exec-1.2.0.jar
spark-shell --jars /hive-exec-3.0.0.jar
和同样的错误。
我在这个githubngrams
中找到了函数的开源代码,但它是用 Java 编写的,我不知道是否可以在 Spark-shell (Scala) 中调用它。
也许这是一个微不足道的问题,如果有人可以帮助我,我将不胜感激。
我正在使用 Scala 2.11.8、Java 1.8、Spark 2.3.0 和 Spark 1.6
解决方案
推荐阅读
- jquery - 用 django HttpResponse 中的 ajax 替换正文内容的问题
- http - 使用 LE 集成设置 Traefik - 错误太多重定向 / 302
- http - Arduino UNO 和 ESP8266 如何发送 http 响应
- sql - oracle中的SQL表变量
- svg - 以编程方式将文本修复到 viewBox
- javascript - Multer:文件的路径不正确
- c# - 验证电话号码
- excel - 如果语句在 ByVal Target As Range 中未正确执行
- python - 返回 sklearn 的高斯朴素贝叶斯的原始概率
- javascript - 如何在使用 Javascript 在智能手机上录制时捕获所有频率?