Spark从hbase 并发取数据,并用spark-shell提交

Spark-Hbase 查询 要使用HBase-Spark Connector,用户需要定义在HBase和Spark表之间的映射关系的schema目录,准备数据,并且填充到HBase表中,然后加载HBase Dataframe。之后,用户可以使用SQL查询做集成查询和访问记录HBase的表。以下描述了这个的基本步骤: 1、定义目录(Define catalog)2、保存DataFrame3、加载DataFrame4、SQL 查询 1.定义目录Define catalog val catalog = s"""{ ... 阅读详情
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.{Base64, Bytes}
import org.apache.spark.sql.SparkSession
import org.slf4j.LoggerFactory
import org.apache.hadoop.hbase.client.{Scan,Result}
import org.apache.hadoop.hbase.protobuf.ProtobufUtil
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp
import org.apache.hadoop.hbase.filter.{ FilterList, SingleColumnValueFilter,SubstringComparator}

System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

var ss: SparkSession = null
ss = SparkSession.builder().enableHiveSupport().getOrCreate()
val sc = ss.sparkContext

val hbaseColumns = Array("c:tt", "c:ad_final_url","c:url","c:delivery_countries","c:la","c:ad_picture", "c:campaign_source", "c:ad_merchant_id")

val queryColumns = hbaseColumns.map(c => c).mkString(" ")

val hBaseConfiguration = HBaseConfiguration.create()
//hBaseConfiguration.set(TableInputFormat.INPUT_TABLE, "bidword_ad_pps_daily") //hbase 中的表
hBaseConfiguration.set(TableInputFormat.INPUT_TABLE, "table_name") //hbase 中的表
hBaseConfiguration.set(TableInputFormat.SCAN_COLUMNS, queryColumns)
//添加过滤条件
val filterListOR1 = new FilterList(FilterList.Operator.MUST_PASS_ONE)
val filterListOR2 = new FilterList(FilterList.Operator.MUST_PASS_ONE)
val filterListAND = new FilterList(FilterList.Operator.MUST_PASS_ALL)
val scan = new Scan()
val filter1=new SingleColumnValueFilter("c".getBytes,"campaign_source".getBytes,CompareOp.EQUAL,Bytes.toBytes("k"))
val filter2=new SingleColumnValueFilter("c".getBytes,"campaign_source".getBytes,CompareOp.EQUAL,Bytes.toBytes("ag"))
filterListOR1.addFilter(filter1)
filterListOR1.addFilter(filter2)
val  filter3 = new SingleColumnValueFilter("c".getBytes,"delivery_countries".getBytes,CompareOp.EQUAL,new SubstringComparator("ww"))
val  filter4 = new SingleColumnValueFilter("c".getBytes,"delivery_countries".getBytes,CompareOp.EQUAL,new SubstringComparator("sg"))
filterListOR2.addFilter(filter3)
filterListOR2.addFilter(filter4)
filterListAND.addFilter(filterListOR1)
filterListAND.addFilter(filterListOR2)


scan.setFilter(filterListAND)
hBaseConfiguration.set(TableInputFormat.SCAN,Base64.encodeBytes(ProtobufUtil.toScan(scan).toByteArray))

val sqlContext = ss.sqlContext
import sqlContext.implicits._

val hbaseRDD = sc.newAPIHadoopRDD(hBaseConfiguration, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])

val dataRDD = hbaseRDD.map({ case (_, result) =>
    val item_id = Bytes.toString(result.getRow) 
    val ad_final_url = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("ad_final_url")))          
    val image = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("ad_picture")))
    val campaign_source = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("campaign_source")))
    val delivery_countries = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("delivery_countries")))
    val language = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("la")))
    val title = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("tt")))
    val url = Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("url")))
    val ad_merchant_id=Bytes.toString(result.getValue(Bytes.toBytes("c"), Bytes.toBytes("ad_merchant_id")))
    //(title,ad_final_url)
    Array(item_id,ad_final_url,image,campaign_source,delivery_countries,language,title,url,ad_merchant_id).mkString("\001")
})



//dataRDD.toDF().show(20,false)
//println(dataRDD.count())



dataRDD.saveAsTextFile("hdfs://path")

直接查询

scan 'table_name',{LIMIT=>5}


scan 'table_name',{COLUMNS => ['c:tt', 'c:ad_final_url'],LIMIT=>20}

shell提交



spark-shell \
--name "fetch_hbase_test" \
--master yarn-client \
--num-executors 4 \
--executor-cores 2 \
--executor-memory 3G \
--driver-memory 5G \
--conf spark.driver.maxResultSize=10g \
--conf spark.yarn.executor.memoryOverhead=10000 \
--conf spark.serializer="org.apache.spark.serializer.KryoSerializer" \
--conf spark.shuffle.memoryFraction=0.3 \
--conf spark.sql.shuffle.partitions=1000 \
--conf spark.default.parallelism=1000 \
--jars $path/hbase-client-1.0.2.jar \
--conf spark.hbase.obtainToken.enabled=true \
--conf spark.yarn.security.credentials.hbase.enabled=true \
--files $path/conf/hdfs-site.xml

通常引用hbase-client-1.0.2.jar就可以了,但有些jar包不知啥问题,引用以下几个才行:

--jars $path/spark-hbase_2.11-2.3.2.jar \
--jars $path/hbase-hadoop-compat-1.3.1.jar \
--jars $path/hbase-common-1.3.1.jar \
--jars $path/hbase-client-1.3.1-6407.jar \
spark将数据写入hbase以及从hbase读取数据 本文将介绍 1、spark如何利用saveAsHadoopDataset和saveAsNewAPIHadoopDataset将RDD写入hbase 2、spark从hbase中读取数据并转化为RDD 操作方式为在eclipse本地运行spark连接到远程的hbase。 java版本:1.7.0 scala版本:2.10.4 zookeeper版本:3.4.5(禁用了hbase自带zoo 阅读详情

相关推荐

spark-shell 统计hbase数据条目数

sc.stop sc.stop import org.apache.hadoop.conf.Configuration import org.apache.hadoop.hbase.client.HBaseAdmin import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor, TableName} import or

YiqiangXu的博客 2393

Spark查询Hbase小案例

写作目的 1)正好有些Spark连接HBase的需求,当个笔记本,到时候自己在写的时候,可以看 2)根据rowkey查询其实我还是查询了好久才找到,所以整理了一下 3)好久没发博客了,水一篇 版本 Scala2.11.1 Spark 2.11 HBase2.0.5 代码 其中hbase-site.xml为hbase安装目录下/hbase/conf里的hbase-site.xml pom依赖 <properties> <mysql....

CBeann的博客 1119

编译的spark-hive_2.11-2.3.0和 spark-hive-thriftserver_2.11-2.3.0.jar

spark-hive_2.11-2.3.0 spark-hive-thriftserver_2.11-2.3.0.jar log4j-2.15.0.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.25.jar curator-client-2.4.0.jar curator-framework-2.4.0.jar curator-recipes-2.4.0.jar

基于HBase和Spark构建企业级数据处理平台

场景需求和挑战 面临的场景 金融风控 用户画像库 爬虫抓取信息 反欺诈系统 订单数据 个性化推荐 用户行为分析 用户画像 推荐引擎 海量实时数据处理 社交Feeds 海量帖子、文章 聊天、评论 海量实时数据处理 时空时序 监控数据 轨迹、设备数据 地理信息 ...

大数据基础入门教程 776

共享单车需求预测问题:建模篇

机器学习训练营——机器学习爱好者的自由交流空间(qq群号:696721295) 在上一篇里,我们使用可视化的方法分析了“共享单车”的数据集,理解了特征(变量)之间的关系。我们将在本篇建立几个模型预测单车的需求量,并比较它们的预测效果。 随机森林填充法 首先,导入必需的库、训练集和检验集。 import pylab import calendar import numpy as np impor...

wong2016的博客 1万+

详细Ubuntu 22.04 配置最新UR机械臂仿真环境(ros2-humble, ur-sim, ur-ros2-driver)

使用ubuntu22.04.01和ur-sim, ur-driver进行ur机械臂的仿真

verloge的博客 1万+

spark-shell 读写hdfs 读写hbase 读写redis

(1)初学者对于spark的几个疑问 http://aperise.iteye.com/blog/2302481 (2)spark开发环境搭建 http://aperise.iteye.com/blog/2302535 (3)Spark Standalone集群安装介绍 http://aperise.iteye.com/blog/2305905

猿类崛起 4983

EDA环境下的LSF进阶调优:如何为Cadence/VCS等工具正确配置cgroups与daemon starter

本文深入探讨了在EDA环境中如何为Cadence/VCS等工具正确配置LSF的cgroups与daemon starter,解决资源分配与特殊应用兼容性问题。通过详细解析cgroups技术、daemon starter配置及混合资源管理策略,帮助提升LSF集群的效率和稳定性,特别适用于高性能计算和芯片设计场景。

weixin_33724046的博客 461

以yarn client和分布式集群方式运行spark-2.3.2-bin-hadoop2.6

修改配置文件/hadoop_opt/spark-2.3.2-bin-hadoop2.6/conf/spark-env.sh 终端输入 spark-shell --master yarn-client即可,最后出现如下截图 注:输入命令spark-shell --master yarn --deploy-mode client也可 ...

weixin_37353303的博客 617

1688店铺所有商品API接口(整店商品查询API接口)

1688店铺所有商品API接口、1688店铺列表API接口,1688店铺API接口,1688店铺查询商品API接口,1688店铺商品API接口,1688店铺详情接口,1688商品API接口

tbprice的博客 1568

保姆级教程:断网环境下用Flexnet服务器搞定SolidWorks 2021安装与破解(附错误5解决方案)

本文提供SolidWorks 2021在断网环境下的企业级部署指南,详细解析Flexnet服务器本地化工作原理,并给出安装与破解的实战方案,特别针对常见的'错误5'问题提供多维度解决方案。适用于需要内网隔离或移动办公的工业设计场景,确保数据安全与授权合规。

weixin_28683391的博客 298

spark-shell 通过scala 连接、操作hbase

//1) 建立表, 表名:test 字段名: cf //安装hbase 后通过hbase-shell启动hbase命令行方式 //参考:https://www.w3cschool.cn/hbase_doc/hbase_doc-7hpa2llr.html create ‘test’, ‘cf’ //desc 表信息 list ‘test’ //插值 put ‘test’, ‘row1’, ‘cf:...

snetlogon20的博客 907

【机电杂谈2】BLDC和PMSM的特点和区别

在日常生活中,小到电动玩具,大到电动汽车,永磁电机的身影可以说是无处不在。有刷直流电机、无刷直流电机、永磁同步电机由于其结构和输出特定的不同也被应用到不同的场合。如果你经常拆一些玩具和家电,就会看到大量的有刷直流电机和无刷直流电机,而永磁同步电机主要应用在高精度的工业伺服和电动汽车领域。本文就从电机的结构和控制方面,对这几种常见的永磁电机做简单的梳理和归纳。

2936

spark 存入hbase_spark-shell读写HBase,RDD方法,HFile写入

亲测有效spark-shell --jars /home/wsy/jars/hbase-spark-1.2.0-cdh5.7.1.jardef readHbase(sc:org.apache.spark.SparkContext,readTableName:String="USER") ={val hbaseConf = org.apache.hadoop.hbase.HBaseConfigura...

weixin_39572442的博客 364

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1584

电池管理系统(BMS)系列(四)—数据采集之温度

属于BMS系列文章,介绍了电池包温度采集相关方式

zxx52113140的博客 5458

spark如何导入数据到hbase数据库

spark访问hbase数据库 在实际生产过程中,因为数据的复杂性,我们通常将处理好的数据缓存到hbase中。 本篇文章目的在于在学习过程中做笔记,以备后面的巩固复习。 代码如下 package com.aura.bigdata.dmp.util import org.apache.hadoop.conf.Configuration import org.apache.hadoop.hbase....

qq_42750329的博客 1457

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10下Spark java读取Hbase数据

本文采用spark2.1+hadoop2.7.3+Hbase1.3.0的配置,在hbase shell中插入数据,然后用java把这些数据读入到spark rdd中

Incy_1218的专栏 2920

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

老版QQ原生表情gif动态

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

spark sql——6. spark sql操作hbase

目标: 在hbase建一张表,使用spark sql操作它 参考: https://blog.youkuaiyun.com/eyeofeagle/article/details/84571756 https://blog.youkuaiyun.com/eyeofeagle/article/details/89943913 hbase数据准备: 进入hbase shell: [root@hadoo...

ant的博客 4081

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

spark-shell读取hbase中的数据

spark-shell读取hbase中的数据

Linus_zyx的博客 592

spark 存入hbase_Spark入门:读写HBase数据

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载![返回Spark教程首页]Spark处理的数据有很多是存放在HBase数据库中的,所以,我们需要学会如何读写HBase数据库。HBase是针对谷歌BigTable的开源实现,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。HBase可以支持超大规模数据存储,它可以通过水平扩展的方式...

weixin_39965881的博客 354

Spark大数据分析与实战笔记(第五章 HBase分布式数据库-03)

HBase数据库不同于一般的数据库,如MySQL数据库和Oracle数据库是基于行进行数据的存储,而HBase则是基于列进行数据的存储,这样的话,HBase就可以随着存储数据的不断增加而实时动态的增加列,从而满足Spark计算框架可以实时的将处理好的数据存储到HBase数据库中的需求。进入HBase Shell交互界面后,可以通过一系列Shell命令操作HBase, 接下来,通过一张表列举一些操作HBase表常见的Shell命令,具体如表所示。其实有斗争,有苦恼,但是要希望尚存,就有幸福。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

spark-shell 统计hbase数据条数

sc.stop sc.stop import org.apache.hadoop.conf.Configuration import org.apache.hadoop.hbase.client.HBaseAdmin import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor, TableName} import or

YiqiangXu的博客 1408

大数据存储技术(3)—— HBase分布式数据库

HBase是Apache的Hadoop项目的子项目,是一个分布式的、面向列的开源数据库。本篇文章介绍HBase及其安装配置。

Morse_Chen的博客 4295

基于Spark2.x新闻网大数据实时分析可视化系统项目

本次项目是基于企业大数据经典案例项目(大数据日志分析),全方位、全流程讲解 大数据项目的业务分析、技术选型、架构设计、集群规划、安装部署、整合继承与开发和web可视化交互设计。项目代码托管于github,大家可以自行下载。一、业务需求分析捕获用户浏览日志信息实时分析前20名流量最高的新闻话题实时统计当前线上已曝光的新闻话题统计哪个时段用户浏览量最高二、系统架构图设计三、系统数据流程设计四、集群资源...

xl.zhang的博客 7万+

HBase Shell命令行终端

7.1 HBase的访问方式和HBase Shell 本节先介绍HBase访问方式,包括HBase提供的访问方式和SQL on HBase访问方式。再重点介绍HBase Shell命令行终端,包括如何进入HBase Shell终端环境,如何查看HBase Shell提供的常用操作命令。 7.1.1HBase的访问方式 1.HBase自身提供的访问方式 HBase属于典型的NoSQL非关系型数据库,不支持标准的SQL查询,但自身提供多种方式对数据库表进行访问和操作。HBase常见的数据库表访问方式如表

qq_35447918的博客 1792
上一篇: Linux 内存:物理内存和虚拟内存
下一篇: 一个英文字母,一个中文各占多少字节
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值