Apache spark Spark、HiveContext、ThriftServer-表持久性

Apache spark Spark、HiveContext、ThriftServer-表持久性,apache-spark,hive,apache-spark-sql,Apache Spark,Hive,Apache Spark Sql,我已配置数据SparkStreaming。我想为各种目标保留这些数据: 为Tableau公开(它需要thriftServer,而thriftServer 需要hiveContext) 有时我希望能够更新一些数据 HiveContext中的数据保存在哪里?在记忆中?在本地磁盘上?它是由thriftServer提供的吗?您可以选择使用 您的\u配置单元\u上下文.cacheTable(“表\u名称”) Thrift服务器访问包含所有表(甚至临时表)的全局上下文 如果缓存表,Tableau将更快地

我已配置数据SparkStreaming。我想为各种目标保留这些数据:

  • 为Tableau公开(它需要thriftServer,而thriftServer 需要hiveContext)

  • 有时我希望能够更新一些数据


HiveContext中的数据保存在哪里?在记忆中?在本地磁盘上?它是由thriftServer提供的吗?

您可以选择使用

您的\u配置单元\u上下文.cacheTable(“表\u名称”)

Thrift服务器访问包含所有表(甚至临时表)的全局上下文

如果缓存表,Tableau将更快地获得查询结果,但您必须继续运行Spark Batch应用程序


我还没有找到在不打开新HiveContext的情况下更新某些数据的方法。

您可以通过执行以下操作将数据帧从spark持久化到hive表:
yourDataFrame.saveAsTable(“YourTableName”)

如果要将数据插入现有表,可以使用:
yourDataFrame.writer().mode(SaveMode.Append).saveAsTable(“YourTableName”)

这将在持久配置单元表上保存数据帧。此表的位置将取决于您的
配置单元site.xml
中的配置

默认情况下,如果您在本地测试,该位置将位于本地磁盘上的位置
/user/hive/warehouse/YourTableName

如果将Spark与Hive on Thread/HDFS一起使用,则表格将保存在Hive-site.xml配置文件中的属性
Hive.metastore.warehouse.dir
定义的HDFS上


希望这会有所帮助:)

好的,你能告诉我Hive是如何存储数据的吗?也许好主意是用卡桑德拉代替蜂巢?“我还没有找到在不打开新HiveContext的情况下更新某些数据的方法。”这是什么意思?在我的例子中,beeline可以看到新插入的数据。嗯,Hive将数据存储在磁盘上。Cassandra与Spark Streaming的结合使用非常普遍。“我还没有找到在不打开新HiveContext的情况下更新某些数据的方法。”这意味着一旦打开提交应用程序的HiveContext,Hive将访问表的相同“快照”;即使他们真的从Spark流媒体应用程序中获取新数据。是的,这很有帮助。但是,保存表的默认位置是本地磁盘。我还好吗?它也可能是HDFS,那么我必须配置HDFS。这是真的吗?你们能给我一个关于为thriftServer和spark应用程序配置HDFS的教程链接吗?apache spark和apache hive之间的关系是什么?您需要将您的spak配置为使用Thread/HDFS:。然后按照这里的解释配置spark thrift server:ApacheSpark使用ApacheHive的功能解析sql语句,thrift server本身就是一个hiveserver,其引擎是spark。请参考此答案了解更多详细信息:纱线是否与HDFS连接?我的意思是,如果可以使用hdfs而不使用纱线吗?是的,你可以。但我想既然您使用的是HDFS和Hive,那么您可能使用的是全堆叠纱线/HDFS/Hive/Spark/…:)