Pyspark中遇到的 java.io.IOException: Not a file 和 pyspark.sql.utils.AnalysisException: 'Table or view not found
最近执行pyspark时,直接读取hive里面的数据,经常遇到几个问题:
1. java.io.IOException: Not a file —— 然而事实上文件是存在的,是 hdfs 的默认路径出了错,需要配置 --files 和 --conf。
2. pyspark.sql.utils.AnalysisException: 'Table or view not found —— 事实上在hive里面是存在这个表的,但是却显示找不到。
3. org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database 'XXXXX' not found; —— 直接显示数据库找不到,是因为没有配置enableHiveSupport(),例如需要设置:spark = SparkSession.builder.master("local").appName("SparkOnHive").enableHiveSupport().getOrCreate()
出现这些问题的原因:
在我这里测试的是:hive配置以及spark-submit提交作业时,参数未设置造成。
# 以下测试通过
import os
# from pyspark import SparkContext, SparkConf
from pyspark.sql.session import SparkSession
from pyspark.sql import HiveContext
import sys os.environ["PYSPARK_PYTHON"]="/usr/bin/python3" spark = SparkSession.builder.master("local").appName("SparkOnHive").enableHiveSupport().getOrCreate() #必须配置 enableHiveSupport
hive_text = HiveContext(spark)
print(sys.getdefaultencoding()) hive_text.sql('use default') #选择数据库名
data_2 = hive_text.sql("select * from word_test") #执行查询语句
#data_2 = hive_text.sql("select * from test_table_words")
data_3 = data_2.select("first_column_name").collect() #选择表中的某一列,或某几列,需要输入列名 print(data_3[0][0]) print(data_2.collect()[0])
print(data_2.collect()[0][0])
print("------ finished ------")
以上代码保存为:test.py
在命令行或者shell执行时,需要使用:
spark-submit --files /opt/spark/spark-2.1.1-bin-hadoop2.7/conf/hive-site.xml --conf spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true test.py
其中:
--files:用于添加hive配置文件,首先注意的是:你的hadoop、spark、hive等都是安装配置好的,建议安装spark_with_hive之类已经编译好的spark。
--conf:一个关键配置,这个配置还在学习中
在上述方法执行成功后,第二次执行时发现:spark-submit --files /opt/spark/spark-2.1.1-bin-hadoop2.7/conf/hive-site.xml test.py 也可以直接执行了,有点懵,可能在hive-site.xml中设置了--conf,还在继续学习中。
注意:此时并不需要在代码里面设置spark.sql.warehouse.dir:config("spark.sql.warehouse.dir", some_path)
Pyspark中遇到的 java.io.IOException: Not a file 和 pyspark.sql.utils.AnalysisException: 'Table or view not found的更多相关文章
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接解决办法
问题现象和http://hi.baidu.com/cara_cloud/item/193a3ee327546d395a2d64be描述的一样,就是在eclipse的console栏中一直显示java. ...
- myEclipse中改了项目名,出现的问题 和 错误java.io.IOException: tmpFile.renameTo(classFile) failed
今天遇到一个很头疼的问题,建的一个新项目,后来因为一些原因把项目名改了,之后就做了一些业务,但运行时总是没有反应,后来在myEclipse工作空间下的webapps文件中发现, 部署的文件名和项目名称 ...
- 运行基准测试hadoop集群中的问题:org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /benchmarks/TestDFSIO/io_data/test_
在master(即:host2)中执行 hadoop jar hadoop-test-1.1.2.jar DFSCIOTest -write -nrFiles 12 -fileSize 10240 - ...
- Hadoop与HBase中遇到的问题(续)java.io.IOException: Non-increasing Bloom keys异常
在使用Bulkload向HBase导入数据中, 自己编写Map与使用KeyValueSortReducer生成HFile时, 出现了以下的异常: java.io.IOException: Non-in ...
- Android开发中与服务器交互时,遇到java.io.IOException: Target host must not be null的问题
当我遇到这个问题的时候,也在网上查找好半天.找到了一个和这个问题很类似的问题——java.lang.IllegalStateException: Target host must not be nul ...
- java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
1.异常表现:我在jsp文件中有一个<form>表单,里面有一个<button>保存事件按钮.<button onclick="addOrUPdate()&q ...
- elasticsearch中的java.io.IOException: 远程主机强迫关闭了一个现有的连接
[2018-07-31T14:29:41,289][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [9rTGh-y] caught exc ...
- HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException):
ERROR: Can't get master address from ZooKeeper; znode data == null 一定注意这只是问题的第一层表象,真的问题是: File /hb ...
- 如何解决tomcat中的应用报java.io.IOException: 您的主机中的软件中止了一个已建立的连接
转载: 施勇: https://blog.csdn.net/shiyong1949/article/details/72845634 这两天突然看到日志文件中有“java.io.IOException ...
随机推荐
- GWAS+自然选择:62个样本的GWAS分析,没信号,如何巧妙的发文章
欢迎来到"bio生物信息"的世界 6天前,BMC Genomics 推了一篇文献"Population history and genetic adaptation of ...
- Celery-系统守护进程
1. 使用systemd控制Celery 用法: systemctl {start|stop|restart|status} celery.service 配置文件: /etc/celery/cele ...
- [Golang] go modules使用
关于go modules的使用外面的教程实在太多了,我这里只讲下我自己使用的三种情形. 准备工作: 1.新建个文件加gomod_test. 2.在这个目录输入命令 go mod init gomod_ ...
- CentOS7 ping: unknown host www.baidu.com
原文链接:https://blog.csdn.net/zz657114506/article/details/53871470
- Any Video Converter Pro for Mac注册码
Any Video Converter Pro for Mac注册码:name:www.macmofo.comsn:000016-D84U8Q-8BN16B-WP2BV6-9RA73A-X7D4V3- ...
- Linux 就该这么学 CH03 管道符、重定向和环境变量
0 概述 1 输入输出重定向 重定向技术有5种模式: 标准覆盖输出重定向 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重定向 输入重定向 输入重定向是将文件导入到命令中. 输出重定向是将输入到 ...
- 解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
项目中遇到的问题 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; public cl ...
- matlab循环中显示figure时窗口跳动
在Matlab中,当在一个循环内部利用figure显示图片时,有时候会出现窗口跳动,尤其是两个显示器的时候, 具体就是每次循环中显示的figure的位置都出现在屏幕的不同位置,导致看起来灰常不爽 go ...
- 【转帖】Kafka入门介绍
Kafka入门介绍 https://www.cnblogs.com/swordfall/p/8251700.html 最近在看hdoop的hdfs 以及看了下kafka的底层存储,发现分布式的技术基本 ...
- JAVA–利用Filter和session防止页面重复提交
JAVA–利用Filter和session防止页面重复提交解决思路:1 用户访问表单页面,先经过过滤器,过滤器设置一个随机id作为token令牌, 并将该token放入表单隐藏域中.2 表单响应到浏览 ...