猿创征文|大数据bug笔记之利用Hudi将数据落地到HDFS

前言:遇到困难,旁边有大佬一定要问!!!(当然,如果觉得自己能解决就自己解决吧!!!)你怎么也解决不了的问题,在别人看来只是看一眼就能解决的问题!一个小问题卡了一天,还好在中秋前一天解决了,能够过一个快乐的中秋节了!!!祝大家中秋节快乐,都吃上好吃的大月饼!!!

进入正题
需求:通过Spark消费Kafka的数据并进行处理,将用户的行为数据和基本信息数据分类,使用Hudi存储并同步Hive表,生成两张表。

报错情况

执行代码,报出如下错误:

在这里插入图片描述

Exception in thread "main" org.apache.spark.sql.streaming.StreamingQueryException: Cannot create hive connection jdbc:hive2://192.168.109.101:10000/
=== Streaming Query ===
Identifier: [id = 454bfb83-c6a7-4f3e-88f1-4cf18a631c61, runId = e0300265-62bf-4795-8ea1-ad1025477296]
Current Committed Offsets: {KafkaV2[Subscribe[news]]: {"news":{"2":316,"1":308,"0":268}}}
Current Available Offsets: {KafkaV2[Subscribe[news]]: {"news":{"2":316,"1":309,"0":268}}}

org.apache.spark.sql.streaming.StreamingQueryException: Cannot create hive connection jdbc:hive2: //192.168.109.101:10000/😦

乍一看,就是不能远程连接hive,它确实也就是不能连接。

思路一

首先

,考虑不能连接是否节点没开启,所以
开启hive元数据

hive --service matestore &

开启远程连接hiveserver2

hive --service hiveserver2	
或直接
hiveserver2

再次打开一个虚拟机界面
jps检查节点是否开启。

第二步

(其他博主那里借鉴的一点解决思路),检查pom文件中的依赖,看hive-jdbc版本是否匹配
在这里插入图片描述
检查resources下的.xml文件,是否配置齐全
在这里插入图片描述

第三步

,检查参数是否配置正确(如下图所示)
在这里插入图片描述

在这里插入图片描述
以上三步(启动节点、检查配置文件、检查启动参数)都没问题了,再次执行代码,结果还是不能连接;
既然这样连不上,换个方式连接试试。

思路二

(步骤如下图)
在项目右边点击Database连接到hive,看是否能够建立连接
在这里插入图片描述
点击+
在这里插入图片描述
选择Data Source,再选择Apache Hive
在这里插入图片描述

这里填写连接信息,Name填写随意,Host填写IP地址,User和Password根据自己设定的填写,端口默认10000,最后点击Test Connection测试能否连接到hive,这里结果显示能够连上,同时这里也会显示Hive JDBC的版本。
在这里插入图片描述
做到这里,我就纳闷了,难道是代码有问题?继而检查代码,最后也没发现啥问题…
最后的最后,只能报最后的希望寄托到老师身上,当然老师也从没让人失望,看了一眼报错就判断出了问题所在。

问题所在

报错信息太多没仔细看后面的一长串,下面是详细问题描述:

Required field ‘serverProtocolVersion’ is unset!

[*org.apache.hive.service.cli.HiveSQLException:Failed to open new session:

org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode=“/tmp”:root:supergroup:dr–r–r–

在这里插入图片描述

Caused by: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.109.101:10000: Could not establish connection to jdbc:hive2://192.168.109.101:10000: Required field 'serverProtocolVersion' is unset! Struct:TOpenSessionResp(status:TStatus(statusCode:ERROR_STATUS, infoMessages:[*org.apache.hive.service.cli.HiveSQLException:Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:dr--r--r--

在这里插入图片描述

Caused by: java.sql.SQLException: Could not establish connection to jdbc:hive2://192.168.109.101:10000: Required field 'serverProtocolVersion' is unset! Struct:TOpenSessionResp(status:TStatus(statusCode:ERROR_STATUS, infoMessages:[*org.apache.hive.service.cli.HiveSQLException:Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:dr--r--r--

总而言之,言而总之,就是HDFS中的文件权限不够。所以,困了我一天的问题,就是这么一个不起眼的小问题:(
操作:

hdfs dfs -chmod 777 /tmp

再次执行代码,不出意外的成功运行,进入hive,查询库、表、数据,数据成功落地!!!
在这里插入图片描述
谨以此篇,警醒自己认真分析报错信息(可能还是解决不了…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChlinRei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值