在gcp上使用pyspark,我有时会收到这样的消息
AnalysisException: "Database 'default' not found;"
根据我所做的研究,我知道这与Hive表有关。也许我应该明确告诉spark hive.xml
文件是。我知道我有这个文件
./etc/hive/conf.dist/hive-site.xml
其他一些可能很重要的文件
./usr/local/share/google/dataproc/bdutil/conf/hive-template.xml
./usr/local/share/google/dataproc/bdutil/conf/hive-ha-mixins.xml
./etc/hive-hcatalog/conf.dist/proto-hive-site.xml
我进入Pypark的方式和在aws上一样。我正在ssh连接到集群,并构建自己的集群 spark-submit
命令。一开始就像
export PYTHONPATH=/path/to/my/stuff:$PYTHONPATH
export PYSPARK_PYTHON=/usr/bin/python3
export PYSPARK_DRIVER_PYTHON=/usr/local/bin/ipython3
pyspark --class main --master yarn --deploy-mode client --conf spark.speculation=True
也就是说,我正在dataproc集群的主节点上直接创建一个与ipython的交互式pyspark会话。
我没有任何关于启用Hive或定位Hive的特殊选项。我没有显式地使用hive,我只是读取Parquet文件,我所有的sql都是通过pyspark接口的,比如
df = spark.read.parquet('gs://path/to/my/data')
df.groupBy('something').count().show()
这是在dataproc集群上创建交互式pyspark会话的错误方法吗?我找到了文件,比如https://cloud.google.com/sdk/gcloud/reference/dataproc/jobs/submit/pyspark 上面讨论了如何从笔记本电脑提交作业,但我还没有看到任何关于在集群上启动交互式会话的内容。我担心 gcloud dataproc jobs submit pyspark
添加我缺少的特殊选项和配置。
1条答案
按热度按时间9rbhqvlz1#
+1用于使用笔记本,而不是Spark壳。许多初始化操作已升级到可选组件,这些组件的安装速度更快:
jupyter笔记本(Pypark):https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/optional-components#jupyter_notebook
齐柏林飞艇笔记本(多语言,包括sql):https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/optional-components#zeppelin_notebook.
如果你使用
--image-version=preview
(最终--image-version=1.4
),默认情况下,您将获得python3和conda/pip。这样就不需要运行任何脚本来设置Python3。安装anaconda via
--optional-components ANACONDA
它也很方便,因为它附带了很多常见的数据科学包。请注意,设置ssh隧道来查看web界面有点棘手。这是tl;那个医生的医生:
回到最初的问题:我们将spark的类路径配置为包含hive配置(look-in)
/etc/spark/conf/spark-env.sh
). 所以pyspark
,spark-shell
,和spark-submit
命令应该已经正确设置,而不需要任何参数。您粘贴的代码片段并没有真正接触到配置单元(也就是说,您没有阅读或编写配置单元表),所以我不知道您为什么会遇到这个错误消息。