热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javasparksqlhdfs_scala之spark连接SQL和HIVE/IDEA操作HDFS

一、连接SQL方法一、packagecom.njbdqn.linkSqlimportjava.util.Propertiesimportorg.apache.spark.sql.S

一、连接SQL

方法一、

packagecom.njbdqn.linkSqlimportjava.util.Propertiesimportorg.apache.spark.sql.SparkSessionimportorg.apache.spark.sql._

object LinkSql {

def main(args: Array[String]): Unit={

val spark= SparkSession.builder().appName("apptest").master("local[2]").getOrCreate()//1.properties

val prop = newProperties()

prop.setProperty("driver","com.mysql.jdbc.Driver")

prop.setProperty("user","root")

prop.setProperty("password","root")//2.jdbcDF show

val jdbcDF = spark.read.jdbc("jdbc:mysql://192.168.56.111:3306/test","studentInfo",prop)

jdbcDF.show(false)//3.添加一行

importspark.implicits._

val df= spark.createDataFrame(spark.sparkContext.parallelize(Seq((90, "抖抖抖", "男", 23, "sdf", "sdfg@dfg"),(8, "抖33", "男", 23, "s444f", "sdfg@dfg"))))

.toDF("sid","sname","sgender","sage","saddress","semail")//df.show(false)

df.write.mode("append").jdbc("jdbc:mysql://192.168.56.111:3306/test","studentInfo",prop)

}

}

方法二、

packagecom.njbdqnimportorg.apache.spark.sql.{DataFrame, SparkSession}

object KMeansTest {

def readMySQL(spark:SparkSession):DataFrame={

val map:Map[String,String]=Map[String,String](

elems="url"->"jdbc:mysql://192.168.56.111:3306/myshops","driver" -> "com.mysql.jdbc.Driver","user" ->"root","password"->"root","dbtable"->"customs")

spark.read.format("jdbc").options(map).load()

}

def main(args: Array[String]): Unit={

val spark=SparkSession.builder().appName("db").master("local[*]").getOrCreate()

readMySQL(spark).select("cust_id","company","province_id","city_id","district_id","membership_level","create_at","last_login_time","idno","biz_point","sex","marital_status","education_id","login_count","vocation","post")

.show(20)

spark.stop()

}

}

方法三、读取Resource上写的.properties配置:

二、连接HIVE

(一)8 9月写的,没有理解,写的不好

1.添加resources

194923d71277eaeb4d62b0ab05c1b84d.png

2.代码

packagecom.njbdqn.linkSqlimportorg.apache.spark.sql.SparkSession

object LinkHive {

def main(args: Array[String]): Unit={

val spark= SparkSession.builder().appName("apptest").master("local[2]")

.enableHiveSupport()

.getOrCreate()

spark//.sql("show databases")

.sql("select * from storetest.testhive")

.show(false)

}

}

注意!如果XML配置中配置的是集群, val df = spark.read.format("csv").load("file:///D:/idea/ideaProjects/spark_projects/myspark8/src/main/scala/com/njbdqn/DSDF/orders.csv") 就失败了,因为

>>> spark可以读取本地数据文件,但是需要在所有的节点都有这个数据文件(亲测,在有三个节点的集群中,只在master中有这个数据文件时执行textFile方法一直报找不到文件,

在另外两个work中复制这个文件之后,就可以读取文件了)

>>> 解决:删除配置(本地)/上传到hdfs(集群)

(二)12月25日写的

pom文件:

org.apache.spark

spark-hive_2.11

2.3.4

代码中增加配置:hive.metastore.uris

开启metastore元数据共享,

importorg.apache.spark.sql.SparkSession

object EventTrans {

def main(args: Array[String]): Unit={

val spark= SparkSession.builder().master("local[*]")

.config("hive.metastore.uris","thrift://192.168.56.115:9083") # 配置metastore server的访问地址,该server必须开启服务

.appName("test")

.enableHiveSupport().getOrCreate()

spark.sql("select * from dm_events.dm_final limit 3")

.show(false)

spark.close()

}

}

1)192.168.56.115 需要开启metastore服务

hive --service metastore

如果不启动服务,在启动Spark thriftServer服务的时候会报如下错误:

org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

2)192.168.56.115 需要配置直连mysql

验证:

5af84648f888ed9860ecc00b772e6071.png

三、操作HDFS 之 删除

val spark = SparkSession.builder().master("local[*]").appName("app").getOrCreate();/**

* 删除checkpoint留下的过程数据*/val path= new Path(HDFSConnection.paramMap("hadoop_url")+"/checkpoint"); //声明要操作(删除)的hdfs 文件路径

val hadoopConf =spark.sparkContext.hadoopConfiguration

val hdfs= org.apache.hadoop.fs.FileSystem.get(new URI(HDFSConnection.paramMap("hadoop_url")+"/checkpoint"),hadoopConf)if(hdfs.exists(path)) {//需要递归删除设置true,不需要则设置false

hdfs.delete(path, true) //这里因为是过程数据,可以递归删除

}

出现的问题:

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://h1:9000/out, expected: file:///

at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:381)

at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55)

at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:393)

at org.apache.hadoop.fs.ChecksumFileSystem.delete(ChecksumFileSystem.java:452)

at mapreduce.WordCountApp.main(WordCountApp.java:36)

解决方法:

val hdfs = org.apache.hadoop.fs.FileSystem.get(new URI(HDFSConnection.paramMap("hadoop_url")+"/checkpoint"),hadoopConf)



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文详细介绍了使用 SQL Load 和 Excel 的 Concatenate 功能将数据导入 ORACLE 数据库的方法和步骤,同时介绍了使用 PL/SQL tools 将数据导入临时表的方法。此外,还提供了一个转链接,可参考更多相关内容。摘要共计XXX字。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • 本文整理了Java中org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc.getTypeInfo()方法的一些代码示例,展 ... [详细]
  • oracle恢复失败,RMAN数据库恢复失败解决一例
    问题:这是一个从RAC环境的数据库的RAMN备份恢复到一个单机数据库的操作。当恢复数据文件和恢复正常,但在open数据库时出报下面的错误。--rman备 ... [详细]
  • struts2重点——ValueStack和OGNL
    一、值栈(ValueStack)1.实现类:OGNLValueStack2.对象栈:CompoundRoot( ... [详细]
  • 数据库技术:execute immediate
    首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵 ... [详细]
  • 基于,docker,快速,部署,多,需求,spark ... [详细]
  • 透明木头问世!“木头大王”胡良兵再发顶刊,已成立公司加速落地69
    道翰天琼认知智能机器人平台API接口大脑为您揭秘。木材是人类最古老的建筑材料之一,也是一种绿色节能材料,我们对其外观的认知可谓根深蒂固。如今,随着透明木材的问世,这一观感将被颠覆。 ... [详细]
author-avatar
雨舒紫_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有