我已配置数据sparkstreaming。我希望将这些数据用于各种目标:为tableau公开(它需要thriftserver,而thriftserver需要hivecontext)。有时我希望能够更新一些数据。hivecontext中的数据保存在哪里?在记忆里?在本地磁盘上?它是由thriftserver提供的吗?
xwbd5t1u1#
您可以选择使用在内存中缓存数据您的\u配置单元\u上下文.cachetable(“表\u名称”)thrift服务器访问包含所有表(甚至临时表)的全局上下文。如果缓存表tableau,将更快地获得查询结果,但必须继续运行spark批处理应用程序。我还没有找到在不打开新hivecontext的情况下更新某些数据的方法。
eqqqjvef2#
您可以通过执行以下操作将Dataframe从spark持久化到配置单元表: yourDataFrame.saveAsTable("YourTableName") 如果要将数据插入现有表,可以使用: yourDataFrame.writer().mode(SaveMode.Append).saveAsTable("YourTableName") 这将把Dataframe保存在一个持久的配置单元表上。此表的位置将取决于 hive-site.xml .默认情况下,如果您在本地进行测试,则该位置将位于您的本地磁盘上的位置 /user/hive/warehouse/YourTableName 如果您将spark与hive on yarn/hdfs一起使用,那么表将保存在hdfs上由属性定义的位置上 hive.metastore.warehouse.dir 在hive-site.xml配置文件中希望有帮助:)
yourDataFrame.saveAsTable("YourTableName")
yourDataFrame.writer().mode(SaveMode.Append).saveAsTable("YourTableName")
hive-site.xml
/user/hive/warehouse/YourTableName
hive.metastore.warehouse.dir
2条答案
按热度按时间xwbd5t1u1#
您可以选择使用在内存中缓存数据
您的\u配置单元\u上下文.cachetable(“表\u名称”)
thrift服务器访问包含所有表(甚至临时表)的全局上下文。
如果缓存表tableau,将更快地获得查询结果,但必须继续运行spark批处理应用程序。
我还没有找到在不打开新hivecontext的情况下更新某些数据的方法。
eqqqjvef2#
您可以通过执行以下操作将Dataframe从spark持久化到配置单元表:
yourDataFrame.saveAsTable("YourTableName")
如果要将数据插入现有表,可以使用:yourDataFrame.writer().mode(SaveMode.Append).saveAsTable("YourTableName")
这将把Dataframe保存在一个持久的配置单元表上。此表的位置将取决于hive-site.xml
.默认情况下,如果您在本地进行测试,则该位置将位于您的本地磁盘上的位置
/user/hive/warehouse/YourTableName
如果您将spark与hive on yarn/hdfs一起使用,那么表将保存在hdfs上由属性定义的位置上hive.metastore.warehouse.dir
在hive-site.xml配置文件中希望有帮助:)