使用GCP上的pyspark,我有时会收到类似的消息
AnalysisException: "Database 'default' not found;"
从我所做的研究中,我了解到这与蜂窝表有关。也许我应该明确地告诉sparkhive.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
我进入pyspark的方式和我在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,我只是在阅读拼花地板文件,我所有的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用于使用笔记本电脑,而不是火花壳。许多初始化操作都已升级为可选组件,安装速度更快:
- Jupyter笔记本(pyspark):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
),默认情况下将获得Python 3和conda/pip。这样,您就不需要运行任何脚本来设置Python3。
通过--optional-components ANACONDA
安装Anaconda也很方便,因为它附带了许多常见的数据科学包。
请注意,设置SSH隧道以查看web界面有点棘手。这是tl;那个医生的医生:
# Terminal 1: Run an SSH tunnel on port 1080
gcloud compute ssh clustername-m -- -nND 1080
# Terminal 2: Run Chrome (on Linux -- the command is different for a Mac) using the proxy on port 1080. Make sure you don't have any corporate proxy settings that might interfere with using the proxy on 1080.
/usr/bin/google-chrome --proxy-server="socks5://localhost:1080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/master-host-name
回到您最初的问题:我们将Spark的类路径配置为包含Hive配置(参见/etc/spark/conf/spark-env.sh
)。因此,pyspark
、spark-shell
和spark-submit
命令应该已经正确设置,而不需要任何参数。你粘贴的代码片段并没有真正接触到Hive(也就是说,你没有阅读或编写Hive表),所以我不确定你为什么会收到错误消息。