大家好,我需要一些帮助才能在 pyspark 中打开泡菜罐。我正在学习 pyspark,作为一项练习,我正在尝试做一些我认为很简单的事情……但这给我带来了很大的困难。
所以让我们从我正在做的事情开始。我正在使用 Windows,我正在尝试启动本地 thrift 服务器并通过直线连接到我在 spark 会话中在我的应用程序中创建的数据库。
::step1 - start master in cmd
start %SPARK_HOME%\bin\spark-class.cmd org.apache.spark.deploy.master.Master
第 1 步效果很好,我可以看到使用我的 spark 2.3.2 创建的主服务器 spark://nnnn:7077。在本地主机:8080。
::step2 - start worker in cmd
start %SPARK_HOME%\bin\spark-class.cmd org.apache.spark.deploy.worker.Worker spark://n.n.n.n:7077
到目前为止一切顺利,我可以看到我有一个运行着 8 个内核的工作人员。
::step3 - start thrift server
start %SPARK_HOME%\bin\spark-submit.cmd --verbose --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 spark-internal --hiveconf hive.server2.thrift.port=10000 --master spark://n.n.n.n:7077 --total-executor-cores 4
第 3 步 好的,我可以看到 SparkSQL 应用程序正在运行,我什至可以通过直线连接到它!
::if I do
start %SPARK_HOME%\bin\beeline.cmd
Beeline version 1.2.1.spark2 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000: username
Enter password for jdbc:hive2://localhost:10000: password
Connected to: Spark SQL (version 2.3.2)
Driver: Hive JDBC (version 1.2.1.spark2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000> SHOW TABLES;
+-----------+------------+--------------+--+
| database | tableName | isTemporary |
+-----------+------------+--------------+--+
+-----------+------------+--------------+--+
最后一步:创建我的应用程序并将其提供给我的 spark master我现在去 jupiter-notebook 运行我的应用程序:
spark=SparkSession.builder.appName("Publish a database attempt").master("spark://n.n.n.n:7077").config('spark.sql.warehouse.dir','file:///D:/tmp/SparkDatabase/').getOrCreate()
df1=spark.read.csv('C:/data.csv',inferSchema=True,header=True)
df1.coalesce(1).write.mode('overwrite').saveAsTable('testTable')
spark.sql('show tables in default').show()
+--------+-----------+-----------+
|database| tableName|isTemporary|
+--------+-----------+-----------+
| default| testTable| false|
+--------+-----------+-----------+
spark.sql("SELECT * FROM testTable").show()
+--------+--------+--------+
| column1| column2| column3|
+--------+--------+--------+
| hi| there| friend|
+--------+--------+--------+
这是火花击中风扇的时候......我可以在我的应用程序会话中看到这个数据库,但它没有直线显示。回到直线并做另一个 SHOW TABLES;不要做这个伎俩。
评论:
- 我注意到,当我启动 thrift 服务器时,它会创建一个 metastore_db,而当我从 jupiter 笔记本创建我的应用程序时不会发生这种情况。
- 如果我尝试从 pyspark 实例而不是 jupyter-notebook 创建应用程序,则会收到 ERROR XSDB6: Another instance of Derby running。
我在这里想要实现的只是能够通过 Windows 中的直线来查看和查询我的表格作为练习。非常感谢那个泡菜罐的帮助。
使用:conda 4.5.12;蟒蛇3.6.5;PySpark 2.3.2;hadoop-3.0.0