hadoop - 如何从 spark thrift 服务器使用 hadoop?

标签 hadoop apache-spark thrift beeline

请考虑以下设置。

hadoop 版本 2.6.4

Spark 版本 2.1.0

操作系统 CentOS Linux 版本 7.2.1511(核心)

所有软件作为单节点集群安装在一台机器上,spark以独立模式安装。 我正在尝试使用 Spark Thrift 服务器。 要启动 spark thrift 服务器,我运行 shell 脚本 start-thriftserver.sh

运行 thrift 服务器后,我可以运行 beeline 命令行工具并发出以下命令: 命令运行成功:

!connect jdbc:hive2://localhost:10000 user_name '' org.apache.hive.jdbc.HiveDriver
create database testdb;
use testdb;
create table names_tab(a int, name string) row format delimited fields terminated by ' ';

我的第一个问题是在 haddop 上的哪个位置创建了这个表/数据库的基础文件/文件夹? 问题是即使使用 stop-all.sh 停止 hadoop,创建表/数据库命令仍然成功, 这让我认为该表根本不是在 hadoop 上创建的。

我的第二个问题是如何告诉 spark hadoop 安装在世界的哪个地方? 并要求 spark 使用 hadoop 作为从 beeline 运行的所有查询的基础数据存储。

我应该以其他模式安装 spark 吗?

提前致谢。

最佳答案

我的目标是使用 hadoop 作为底层数据存储,通过 Spark Thrift Server 让 beeline 命令行实用程序工作,我让它工作了。我的设置是这样的:

Hadoop  <-->  Spark  <-->  SparkThriftServer  <--> beeline

我想以这样一种方式配置 spark,即它使用 hadoop 来处理在 beeline 命令行实用程序中运行的所有查询。 诀窍是在 spark-defaults.xml 中指定以下属性。

spark.sql.warehouse.dir hdfs://localhost:9000/user/hive/warehouse

默认情况下,spark 对元数据和数据本身都使用 derby(在 spark 中称为仓库) 为了让 spark 使用 hadoop 作为仓库,我必须添加这个属性。

这是一个示例输出

./beeline
Beeline version 1.0.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000 abbasbutt '' org.apache.hive.jdbc.HiveDriver
Connecting to jdbc:hive2://localhost:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/abbasbutt/Projects/hadoop_fdw/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/abbasbutt/Projects/hadoop_fdw/apache-hive-1.0.1-bin/lib/hive-jdbc-1.0.1-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Connected to: Spark SQL (version 2.1.0)
Driver: Hive JDBC (version 1.0.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000>
0: jdbc:hive2://localhost:10000>
0: jdbc:hive2://localhost:10000>
0: jdbc:hive2://localhost:10000> create database my_test_db;
+---------+--+
| Result  |
+---------+--+
+---------+--+
No rows selected (0.379 seconds)
0: jdbc:hive2://localhost:10000> use my_test_db;
+---------+--+
| Result  |
+---------+--+
+---------+--+
No rows selected (0.03 seconds)
0: jdbc:hive2://localhost:10000> create table my_names_tab(a int, b string) row format delimited fields terminated by ' ';
+---------+--+
| Result  |
+---------+--+
+---------+--+
No rows selected (0.11 seconds)
0: jdbc:hive2://localhost:10000>

这里是hadoop中对应的文件

[abbasbutt@localhost test]$ hadoop fs -ls /user/hive/warehouse/
17/01/19 10:48:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 4 items
drwxrwxr-x   - abbasbutt supergroup          0 2017-01-18 23:45 /user/hive/warehouse/fdw_db.db
drwxrwxr-x   - abbasbutt supergroup          0 2017-01-18 23:23 /user/hive/warehouse/my_spark_db.db
drwxrwxr-x   - abbasbutt supergroup          0 2017-01-19 10:47 /user/hive/warehouse/my_test_db.db
drwxrwxr-x   - abbasbutt supergroup          0 2017-01-18 23:45 /user/hive/warehouse/testdb.db

[abbasbutt@localhost test]$ hadoop fs -ls /user/hive/warehouse/my_test_db.db/
17/01/19 10:50:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 1 items
drwxrwxr-x   - abbasbutt supergroup          0 2017-01-19 10:50 /user/hive/warehouse/my_test_db.db/my_names_tab
[abbasbutt@localhost test]$ 

关于hadoop - 如何从 spark thrift 服务器使用 hadoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718065/

相关文章:

java - Hive 在创建表 "Cannot validate serde: com.cloudera.hive.serde.JSONSerDe"时抛出错误

java - hadoop2.7.2 :cannot find java

mysql - 使用sqoop更新hive表

hadoop - 执行 hadoop namenode -format

python - 如何在 Apache Thrift 中编写列表?

scala - 如何从命令行执行 Scrooge?

apache-spark - 为什么 selectExpr 更改架构(包括 id 列)?

apache-spark - 如何使用 Prometheus 监控 Apache Spark?

scala - 使用 Spark hadoop API 创建 RDD 以访问 Cassandra DB

c# - 节俭.Transport.TTransportException : Cannot write to null outputstream