Spark写入数据到Hbase(下)解决scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps

scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; 这个错误就是版本不匹配不正确 spark不匹配scala版本的原因 版本修改前的错误 版本修改后解决,红色是因为运行在windows环境下面的原因 阅读详情

环境配置:
Scala:2.11.12(看上篇,原本是2.12.1)
Spark:2.4.4
Hbase:2.2.3


前言:
上一篇没报错,后来改动了一下,就报错了,这个错是版本的问题,而且让我十分疑惑,所以有了下篇,好像也没啥人看,随便写写吧就😂


代码:
先上代码

import java.util.Date
import org.apache.hadoop.hbase.client.{Put, Result}
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.mapreduce.Job
import org.apache.spark.{SparkConf, SparkContext}

object sparkHbaseWrite {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf()
    val sc = new SparkContext(sparkConf)
    val tablename = "test"
    // hbase 的连接设置
    val hconf = sc.hadoopConfiguration
    hconf.set("hbase.zookeeper.property.clientPort","2181")
    hconf.set("zookeeper.znode.parent","/hbase-unsecure")
    hconf.set("hbase.zookeeper.quorum","192.168.0.111")
    hconf.set(TableOutputFormat.OUTPUT_TABLE,tablename)
    val job = Job.getInstance(hconf)
    job.setOutputKeyClass(classOf[ImmutableBytesWritable])
    job.setOutputValueClass(classOf[Result])
    job.setOutputFormatClass(classOf[TableOutputFormat[ImmutableBytesWritable]])
    val gpsRDD = sc.textFile("file:///home/data/demodata").map(_.split("\\|"))
    val now = new Date()
    val timeStr = now.getTime + ""
    val gpsRDD1 = gpsRDD.map{arr=>{
      val put = new Put(Bytes.toBytes(timeStr + arr(2))) //行健的值 本来想自定义一个,还没设计好,就随便拼一个先,反正能写进去先才是第一步
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("PLA"), Bytes.toBytes(arr(0)))
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("DATE_TIME"),Bytes.toBytes(arr(1)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("KKJ"),Bytes.toBytes(arr(2)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("KKW"),Bytes.toBytes(arr(3)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("SPEED"),Bytes.toBytes(arr(4)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("SPEED_EX"),Bytes.toBytes(arr(5)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("ALTITUDE"),Bytes.toBytes(arr(6)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("STATUS"),Bytes.toBytes(arr(7)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("COLOUR"),Bytes.toBytes(arr(8)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("MILEAGE"),Bytes.toBytes(arr(9)))  
      put.addColumn(Bytes.toBytes("car_info"),Bytes.toBytes("WAY"),Bytes.toBytes(arr(10)))  
      (new ImmutableBytesWritable, put)
    }}
    gpsRDD1.saveAsNewAPIHadoopDataset(job.getConfiguration)
    sc.stop()
  }
}

打包好然后报了个错:

scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;

报错的是这一行:

val gpsRDD = sc.textFile("file:///home/data/demodata").map(_.split("\\|"))

首先语法是肯定没错的,排除代码原因。
然后报错意思说我版本对不上,可是我idea和集群环境是一样的啊,不可能是编译的语言版本不一致导致的,所以排除这个原因。
然后再百度了一下,网上说是因为我们使用的spark-core_2.11是使用scala 2.11编译的,所以,如果我们使用其他版本的scala编译我们的代码就有可能报这样的错。

查了一下,包的名字是写明了版本的例如:spark-core_2.11-2.4.4.jar ,2.11指的是scala的版本,2.4.4指的是spark的版本。
所以为了想知道哪个版本最适合spark2.4.4,我就去官网查查看,结果看的我一愣一愣的(下面的内容使用了谷歌翻译)
在这里插入图片描述
所以是只有spark2.4.2用了scala2.12?再看看
在这里插入图片描述
那为啥我用scala2.12会冲突。。。再看看那些包
在这里插入图片描述
在我去掉原本spark中的scala环境,用默认环境打开spark-shell,看到这个
在这里插入图片描述
所以我把scala版本换了重新编译(pom配置上篇文章有,我改个版本而已)
在这里插入图片描述
就跑通了。。。所以上面官网的提示是啥意思?😥

solidworks实体显示线框 solidworks实体莫名其妙显示为有点虚的线框 阅读详情

相关推荐

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

java.lang.NoSuchMethodError:scala.Predef$.refArrayOps

scala新旧版本冲突导致找不到方法

qq_43341418的博客 2209

企业网络改造必看:如何用华为S5700三层交换机解决多部门隔离通信?

本文详细介绍了如何利用华为S5700三层交换机解决企业多部门网络隔离与通信需求。通过划分VLAN实现逻辑隔离,并配置三层路由实现受控互通,结合ACL进行精细访问控制,构建安全高效的企业网络。文章提供了从拓扑规划、地址分配到核心配置的完整实战指南。

weixin_29260291的博客 260

Exception in thread “main“ java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object

IDEA中创建Scala项目启动代码时主要报错信息为: Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; 说明 IDEA当前的程序运行所使用的Scala SDK与代码中使用 Linu(或本地机器)启动Scala SDK的版本不一致导致无法找到对应的方法。 查看idea中Scala版本

程序员五哥 5008

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1154

避开这5个坑!ADNI数据库下载实操经验分享(含断点续传方案)

本文分享了ADNI数据库下载的5个常见陷阱及解决方案,包括高级搜索策略优化、断点续传技巧和数据完整性验证。特别针对大文件下载中断问题,提供了wget断点续传和分卷下载的实操方法,帮助研究者高效获取神经影像数据,避免重复下载和时间浪费。

git9versioner的博客 373

scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps

将scala-sdk从2.12换为2.11File -> Project Structure -> Global libraries -> Remove SDK -> Rebuild.

ThisIsNobody的博客 1万+

可调电源的电路设计

可调电源在电路调试中经常用到,可调电源分为两种2-5v(非0点可调)和0-5v(低至0点可调)可调两种。 对于第一种非0点电压的可调范围,其主要是由于开关电源或LDO芯片输出的最小电压为一个固定电压值,非0范围。因此通过调节开关电源或LDO端的反馈电阻的设计模型,其电压可调范围都与芯片的参考电压有关。 基于开关电源的可调电压设计电路 因芯片U2的输出参考电压VSENSE管脚为1.22v。因此,通过调节可调电阻R8的数值,其芯片输出的最低电压一定不小于1.22v。当然此种方案是手动可调输出电压的设计,如

weixin_42257266的博客 9731

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps Lscala/collection/mutable/ArrayOps

在idea中配置运行spark程序报错:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Obje...

Nice的博客 1万+

[SV]SystemVerilog中,系统函数$cast()的作用是什么?

摘要:SystemVerilog中的$cast()系统函数用于安全的动态类型转换,主要在类层次结构中将父类句柄转换为子类句柄(向下转换)。它通过运行时类型检查确保转换合法性,成功时返回1并赋值句柄,失败则返回0。这种机制使得可以通过父类句柄访问子类特有成员,在多态场景(如UVM验证)中尤为重要。使用时需检查返回值处理转换失败情况。$cast()比静态转换更安全,但不能用于无关类或基本数据类型间的转换。

元直的博客 1210

Matlab实现雷达波位编排

1 简介 %本程序用于雷达球坐标系到正弦空间坐标系的转换,以及相控阵雷达的波位编排。 2 完整代码 ​%070228添加波位数据保存clear allclose allclc%波束宽度,单位:度BeamWidth = 3.6;theta05 = round(sin(BeamWidth*pi/180)*1000)/1000;%雷达作用空域AZ = [-15 15]; %方位角范围(雷达球坐标系),单位:度EL = [0 30]; %俯仰角范围(雷

qq_59747472的博客 2479

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable...

用Maven创建了一个spark sql项目,在引入spark sql jar包时引入的是: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <vers...

weixin_30932215的博客 720

2025机械考研复试面试问题汇总篇(含13门科目),考研机械复试专业面试常见重点问题总结!考研机械复试专业面试准备看这一篇就够了!

(完整版内容:)1.汇集了本科各科的重点知识及多个机械名校800多个常见问题,共8.7万字185页,涵盖机械所以专业课的重点知识和常见问答。 2.涉及机械大类重点科目,包括:材料力学、控制工程、数控技术、机械制造技术基础、理论力学、液压传动、机械设计、机械原理、工程材料、互换性与技术测量、测试技术、汽车理论、程序设计与C语言等13门必修课。

weixin_56510835的博客 1861

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

运行Flink程序报错: java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object; at com.ruozedata.bigdata.SocketWCApp$.$anonfun$main$1(SocketWCApp.scala:33) at com.ruozedata.bigdata.SocketWCApp$.$anonfun$main$1$adapted(SocketWC

Nice的博客 5407

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object

spark程序报错: java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;) 原因为打包时本地所用的scala版本是2.12 ,而集群中的scala版本是2.11, 将本地的scala版本改成2.11后在打包运行, 运行成功 ...

berkely心路的博客 5328

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Exception in thread “main“ java.lang.NoSuchMethodError: scala.Predef$.refArrayOps

使用IDEA工具运行SparkStreaming的WordCount时,运行报错,报错信息如下: Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; at org.apache.spark.util.Utils$.getCallSite(Utils.scala:1406) at or

User 2625

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

记录一次运行scala程序报错:scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

记录一次运行scala程序报错scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;

雨落 583

Flink:scala包版本问题:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection

这几天深入研究flink,并把之前的东西进行复习下,留点笔记 这问题还真给我搞脑子,本来是新电脑下载的最新的IDEA,然后导入项目,楞许久跑不起来 简短点说,原因:scala版本冲突 检查: Flink或Spark引入的jar对应的scala是不是和你环境的scala一致,别一个2.11,一个2.13. Pom文件检查jar的scala版本; 项目检查Project Structure>Global Libraries 再Project Structure>Modules&g.

maoyuanming0806的博客 3208

scala的java.lang.NoSuchMethodError:scala.Predef$.refArrayOps([Ljava/lang/Object;错误

运行spark demo时出现java.lang.NoSuchMethodError: 在scala中,pom文件的jar文件为2.11.7,不需要在全局变量去加载jar包, 打开project的setting ,删除不需要用的setting即可 ...

jacobwe的博客 1996

java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)

Flink执行问题之--版本

lck_csdn的博客 1027

运行Spark时报错:java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object)

运行Spark报错: java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;) 我这里报错的原因是因为我是使用maven创建项目并添加scala框架支持来运行spark程序,我之前使用的scala版本为2.12的,我以为我已经改成了2.11的,结果路径中引入的还是2.12的,而maven中(pom.xml)引入的scala版本是2.11的,总之一句话,使用的scala版本和maven引入的版本不一致!把它们改一致

David_house的博客 2749

Spark java.lang.NoSuchMethodError: scala.Predef$.refArrayOps

1.问题 2. spark运行的scala版本是有限制 提示 with scala 2.10 support 下载对应版本的scala,然后重新编译jar包

数据之路-忆梦前程 2576

【无标题】

idea中调试spark报错:Exception in thread “main” java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; 在网上找了很多方法,原因是spark与scala版本不对,之前在global library中有两个sdk,去掉一个sdk就行,或者选择一个适合spark版本的sdk,我这里的spark版本是2.4.7,s

qq_49247395的博客 1138

运行spark demo时出现java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)

原因: maven引入的spark相关包版本是2.10,而scala-sdk版本是2.12 解决:两者统一,都使用2.11 更换工程scala-sdk版本:右键工程名称 -> Open Model Settings

kiikgu的专栏 1万+

Scala Predef对象详解

Scala Predef对象 Scala程序设计 第2版 - 原版.pdf 下载:https://download.csdn.net/download/u014646662/10805074 目录: 1.Predef源码 2.类型装换 3.类型定义 4.条件检查方法 5.输入输出方法 6.其他 对人工智能感兴趣的同学,可以点击以下链接: 现在人工智能非常火爆,很多朋友都想学,但...

周天祥的博客 9万+

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object...

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; at org.apache.spark.util.Utils$.getCallSite(Utils.scala:1...

667
上一篇: Spark写入数据到Hbase(上)
下一篇: pandas 对比两个dataframe实现sql的‘not in‘的效果
铲子挖数据
博客等级 码龄8年 24粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值