问题标签 [spark-thriftserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1315 浏览

jdbc - 如何使我的 pyspark 数据库在 Windows 上直线可见?

大家好,我需要一些帮助才能在 pyspark 中打开泡菜罐。我正在学习 pyspark,作为一项练习,我正在尝试做一些我认为很简单的事情……但这给我带来了很大的困难。

所以让我们从我正在做的事情开始。我正在使用 Windows,我正在尝试启动本地 thrift 服务器并通过直线连接到我在 spark 会话中在我的应用程序中创建的数据库。

第 1 步效果很好,我可以看到使用我的 spark 2.3.2 创建的主服务器 spark://nnnn:7077。在本地主机:8080。

到目前为止一切顺利,我可以看到我有一个运行着 8 个内核的工作人员。

第 3 步 好的,我可以看到 SparkSQL 应用程序正在运行,我什至可以通过直线连接到它!

最后一步:创建我的应用程序并将其提供给我的 spark master我现在去 jupiter-notebook 运行我的应用程序:

这是火花击中风扇的时候......我可以在我的应用程序会话中看到这个数据库,但它没有直线显示。回到直线并做另一个 SHOW TABLES;不要做这个伎俩。

评论:

  1. 我注意到,当我启动 thrift 服务器时,它会创建一个 metastore_db,而当我从 jupiter 笔记本创建我的应用程序时不会发生这种情况。
  2. 如果我尝试从 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

0 投票
1 回答
637 浏览

apache-spark - Spark SQL 无法访问 Spark Thrift 服务器

我无法配置 Spark SQL,以便我可以访问 Spark Thrift Server 中的 Hive 表(不使用 JDBC,但本机来自 Spark)

conf/hive-site.xml我为 Spark Thrift Server 和 Spark SQL使用单个配置文件。我将javax.jdo.option.ConnectionURL属性设置为jdbc:derby:;databaseName=/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db;create=true. 我还将spark.sql.warehouse.dir属性设置为指向spark-warehouse目录的绝对路径。我运行 Thrift 服务器,./start-thriftserver.sh我可以观察到嵌入式 Derby 数据库是使用metastore_db目录创建的。我可以连接beeline,创建一个表并查看spark-warehouse使用表的子目录创建的目录。所以在这个阶段它很好。

我在启用 Hive 支持的情况下启动 pyspark shell ./bin/pyspark --conf spark.sql.catalogImplementation=hive,并尝试使用以下命令访问 Hive 表:

我收到如下错误:

错误 XJ040:无法使用类加载器 sun.misc.Launcher$AppClassLoader@1b4fb997 启动数据库“/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db”

错误 XSDB6:另一个 Derby 实例可能已经启动了数据库 /home/user/spark-2.4.0-bin-hadoop2.7/metastore_db

pyspark.sql.utils.AnalysisException:u'java.lang.RuntimeException:java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;

显然 Spark 正在尝试创建新的 Derby 数据库,而不是使用我放在配置文件中的 Metastore。如果我停止 Thrift Server 并只运行 spark,一切都很好。我该如何解决?

嵌入式 Derby Metastore 数据库是否可以让 Thrift Server 和 Spark 访问一个 Hive,或者我需要使用 MySQL?我没有集群并且在本地做所有事情。

0 投票
1 回答
2082 浏览

hive - TBLPROPERTIES('skip.header.line.count'='1') 不适用于从直线连接到 hive jdbc 1.2.1 的 sparkThrift

我正在使用 spark 2.3 并将 sparkThrift 与直线连接。

Hive jdbc 版本 1.2.1 Spark SQL 版本 2.3.1

我正在尝试使用跳过标头属性创建外部表,但选择命令始终返回带有标头的数据作为第一行,下面是我的创建查询

0 投票
0 回答
391 浏览

apache-spark - 使用 Spark 连接器的 Power Bi 和 Spark Thrift 服务器之间的连接速度非常慢

我正在使用 Power Bi 桌面应用程序中的“spark”连接器连接到使用“HTTP”连接模式并启用“SSL”和“Direct Query”选项的 spark thrift 服务器。

在此处输入图像描述

连接成功,但是,Power Bi 应用程序和 Spark Thrift 服务器之间的每次通信(例如身份验证、加载元数据、加载特定表等)都有大约 10 分钟的延迟时间。数据的来源是“Hive Server2”。

我在“hive-default.xml”中的 Spark Thrift 配置如下:

首先,我怀疑“SSL”加密会减慢通信速度,我禁用了它,但问题仍然存在。因此,我得出结论,这与这个问题无关。

关于如何提高通信速度的任何想法?

注意:我测试了使用启用“HTTP”模式和“SSL”加密的“beeline”命令行工具连接到 Spark Thrift 服务器,它运行得非常快,所以我也消除了任何网络延迟问题的可能性。

0 投票
1 回答
543 浏览

apache-spark - 未使用的火花工人

我已经配置了连接到 Cassandra 集群的独立 spark 集群,其中有 1 个主服务器、1 个从属服务器和 Thrift 服务器,该服务器用作 Tableau 应用程序的 JDBC 连接器。无论如何,当我启动任何查询工作人员时,奴隶都会出现在工作人员列表中,似乎没有被用作执行者(使用了 0 个核心)。所有工作负载都由主执行器执行。同样在 Thrift Web 控制台中,我观察到只有一个执行程序处于活动状态。

基本上,我希望 spark 集群的两个执行器上的分布式工作负载能够实现更高的性能。

从主日志:

2019-03-26 15:36:52 INFO Master:54 - 我被选为领导了!新状态:ALIVE 2019-03-26 15:37:00 INFO Master:54 - Registering worker worker-ip:37678 with 16 cores, 61.8 GB RAM

从工人日志:

2019-03-26 15:37:00 INFO Worker:54 - 成功注册 master spark://master-hostname:7077

我的 spark-defaults.conf 是:

pic1 工人

在此处输入图像描述

pic2 执行者

在此处输入图像描述

任何帮助高度赞赏。

0 投票
3 回答
1561 浏览

python - 如何在 Thrift 服务器上查看 pyspark 临时表?

我正在尝试通过 Thrift 在 pyspark 上创建一个临时表。我的最终目标是能够使用 JDBC 从 DBeaver 等数据库客户端访问它。

我首先使用直线进行测试。

这就是我正在做的事情。

  1. 使用 docker 在我自己的机器上用一个工人启动了一个集群并添加spark.sql.hive.thriftServer.singleSession truespark-defaults.conf
  2. 启动 Pyspark shell(为了测试)并运行以下代码:

    from pyspark.sql import Row l = [('Ankit',25),('Jalfaizy',22),('saurabh',20),('Bala',26)] rdd = sc.parallelize(l) people = rdd.map(lambda x: Row(name=x[0], age=int(x[1]))) people = people.toDF().cache() peebs = people.createOrReplaceTempView('peebs') result = sqlContext.sql('select * from peebs')

    到目前为止一切顺利,一切正常。

  3. 在另一个终端上,我初始化 spark thrift 服务器: ./sbin/start-thriftserver.sh --hiveconf hive.server2.thrift.port=10001 --conf spark.executor.cores=1 --master spark://172.18.0.2:7077

    服务器似乎正常启动,我可以看到在我的 spark 集群主 UI 上运行的 pyspark 和 thrift 服务器作业。

  4. 然后我使用直线连接到集群

    ./bin/beeline beeline> !connect jdbc:hive2://172.18.0.2:10001

    这就是我得到的

    连接到 jdbc:hive2://172.18.0.2:10001
    Enter username for jdbc:hive2://172.18.0.2:10001:
    Enter password for jdbc:hive2://172.18.0.2:10001:
    2019-06-29 20: 14:25 INFO Utils:310 - 提供的权限:172.18.0.2:10001
    2019-06-29 20:14:25 INFO Utils:397 - 已解决的权限:172.18.0.2:10001
    2019-06-29 20:14:25 INFO HiveConnection:203 - 将尝试使用 JDBC Uri 打开客户端传输:jdbc:hive2://172.18.0.2:10001
    连接到:Spark SQL(版本 2.3.3)
    驱动程序:Hive JDBC(版本 1.2.1.spark2)
    事务隔离: TRANSACTION_REPEATABLE_READ

    似乎还可以。

  5. 当我列出时,show tables;我什么都看不到。

我想强调的两件有趣的事情是:

  1. 当我启动 pyspark 时,我收到这些警告

    WARN ObjectStore:6666 - 在 Metastore 中找不到版本信息。hive.metastore.schema.verification 未启用,因此记录架构版本 1.2.0

    WARN ObjectStore:568 - 无法获取数据库默认值,返回 NoSuchObjectException

    WARN ObjectStore:568 - 无法获取数据库 global_temp,返回 NoSuchObjectException

  2. 当我启动节俭服务器时,我得到了这些:

    来自 spark://172.18.0.2:7077
    ssh 的 rsync:无法解析主机名 spark:名称或服务未知
    rsync:连接意外关闭(到目前为止已收到 0 个字节) [Receiver]
    rsync 错误:io 出现无法解释的错误(代码 255) .c(235) [Receiver=3.1.2]
    启动 org.apache.spark.sql.hive.thriftserver.HiveThriftServer2,登录到 ...

我经历了几个帖子和讨论。我看到有人说我们不能通过 thrift 公开临时表,除非您从同一代码中启动服务器。如果这是真的,我怎么能在 python (pyspark) 中做到这一点?

谢谢

0 投票
1 回答
713 浏览

python - 无法保持 Spark Thrift 服务器运行

我需要使用 Thrift 在 Spark 上公开一些临时表。这是我在集群上运行的基本代码:

当我使用以下命令运行此作业时:

一切正常开始,但立即停止。

这是我的日志堆栈

我正在使用 spark.sql.hive.thriftServer.singleSession True 来确保它从同一个会话中读取并且我没有看到任何错误,它只是简单地开始遍历所有逻辑并完成工作而不会挂起所以我能够使用 JDBC 从直线或其他 SQL 客户端访问临时表。

如果有人有任何帮助,那就太好了。

0 投票
0 回答
355 浏览

apache-spark - 如何在 Spark 独立集群上的 Spark Thrift 服务器上使用身份验证

我在 Kubernetes 上有一个独立的 spark 集群,我想用它在内存中加载一些临时视图,并使用 spark thrift 服务器通过 JDBC 公开它们。

我已经通过提交一个 spark 作业(在我的例子中为 pyspark)并在同一个作业中启动 thrift 服务器来让它在没有安全性的情况下工作,这样我就可以访问临时视图。

由于我需要公开一些敏感数据,我想至少应用一种身份验证机制。

我读了很多书,基本上看到了两种方法:

  • PAM - 不建议用于生产,因为某些关键文件需要授予 root 用户之外的用户权限。
  • Kerberos - 这似乎是最适合这种情况的一个。

我的问题是: - 对于独立的 spark 集群(在 K8s 上运行),Kerberos 是最好的方法吗?如果不是,是哪一个?- 如果 Kerberos 是最好的,那么在我没有使用任何特定发行版(MapR、Hortonworks 等)的情况下,很难找到一些指导或逐步说明如何设置 Kerberos 以与 spark thrift 服务器一起使用.

感谢你的帮助

0 投票
1 回答
272 浏览

apache-spark - Spark Thrift 服务器排队查询

当并行查询命中 Spark Thrift 服务器时,在 Spark UI --> JDBC/ODBC Server 中,它会将所有查询显示为已启动,但所有查询都以顺序方式执行

这是 Thrift Server 启动脚本---

0 投票
1 回答
126 浏览

ssl - 以二进制模式与 Spark Thrift 服务器的通信是否安全传输?

在我的组织中,我们有一个使用 HTTP 和 SSL 的 Spark Thrift 服务器设置,因为有一个基本假设是二进制模式没有通过网络安全加密,因此可能会泄露凭据或敏感查询数据。

我已经用Google搜索过,扫描阅读了一篇研究论文并查看了 Thrift 协议规范以寻找明确的答案,但无济于事。似乎完全没有提及身份验证和加密意味着它应该由一个封装的网络层来处理?

二进制模式下的 Spark Thrift 服务器传输未加密或其他不安全数据的假设是否正确?