java - 使用 Spark 查询存储在 HDFS 中的数据的最佳方法是什么?

标签 java apache-spark apache-spark-sql spark-thriftserver

我想创建一个使用 Spark 查询 HDFS 中数据的 Java 应用程序。到目前为止,我已经通过两种方式进行了测试: - 对 Thrift 服务器公开的 JDBC 端点进行 SQL 查询(从默认配置开始) - 使用 Spark 数据集 API

我的问题是,对于 hadoop/spark 来说,这两种方式中哪一种最有效且更容易设置(没有默认配置)?

据我目前了解,使用Thrift服务器需要对Thrift和Hive进行配置和维护。另一方面,我预计使用数据集 API 会更慢,并且有更多限制,将数据保留在内存中。

最佳答案

thrift 服务器确实需要稍微多一点的配置,并且需要一个 hive 元存储来保存表定义,您可以使用 sql 查询所有内容。归根结底,运行 thrift 服务器查询和使用非类型化数据集 api 的查询之间的性能基本相同,从功能上讲,您可以使用数据集 api 获得更大的灵 active 。由于代码生成器会输出错误代码(尤其是 Spark 2.2 之前的版本),强类型数据集 api 的性能低于非类型化数据集 api。

关于java - 使用 Spark 查询存储在 HDFS 中的数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48729550/

相关文章:

java - 使用 HTMLUnit 访问 JavaScript 变量

java - 编译失败子包不存在

apache-spark - 带有 Spark 1.6.1 Hadoop 2.7.2 的 Google Dataproc 中带有空记录的 Kinesis Stream

python - PySpark安装错误

mysql - 通过 Kafka 和 Spark 消费大数据

java - JFreeChart 当y轴显示负数时改变大小

apache-spark - 如何访问Spark DataFrame中VectorUDT列的元素?

apache-spark - pyspark 输入读取数组和结构的架构以读取 json

apache-spark - 为什么广播连接收集数据到驱动程序以洗牌数据?

java - 在 for 循环中将大小设置为 n