gpt4 book ai didi

apache-spark - 如何将每个 DStream 保存/插入到永久表中

转载 作者:行者123 更新时间:2023-12-04 04:25:39 24 4
gpt4 key购买 nike

我一直面临关于将输出 Dstream 插入永久 SQL 表的“Spark Streaming”问题。我想将每个输出 DStream(来自激发进程的单个批次)插入到一个唯一的表中。我一直在使用 Python 和 Spark 1.6.2 版。

在我代码的这一部分,我有一个由一个或多个 RDD 组成的 Dstream,我想将其永久插入/存储到 SQL 表中,而不会丢失每个处理批次的任何结果。

rr = feature_and_label.join(result_zipped)\
.map(lambda x: (x[1][0][0], x[1][1]) )

例如,这里的每个 Dstream 都表示为这样的元组:(4.0, 0)。
我不能使用 SparkSQL,因为 Spark 处理“表”的方式,也就是说,就像一个临时表,因此每批都会丢失结果。

这是一个输出示例:

时间:2016-09-23 00:57:00

(0.0, 2)

时间:2016-09-23 00:57:01

(4.0, 0)

时间:2016-09-23 00:57:02

(4.0, 0)

...

如上所示,每批仅由一个 Dstream 制作。正如我之前所说,我想将这些结果永久存储到保存在某处的表中,并可能在以后查询。所以我的问题是:
有没有办法做到这一点?
我很感激是否有人可以帮助我解决这个问题,但特别是告诉我这是否可能。
谢谢你。

最佳答案

除非您下载了与 HDFS 一起打包的版本(尽管它们看起来是 playing with the idea in Spark 2.0 ),否则 Vanilla Spark 不提供持久数据的方法。将结果存储到永久表并稍后查询这些结果的一种方法是使用 Spark 数据库生态系统中的各种数据库之一。每种方法都有利有弊,您的用例很重要。我会提供一些接近主列表的东西。这些分割为:
数据管理类型,表单数据存储,连接Spark
数据库、SQL、集成

  • SnappyData

  • 数据库、SQL、连接器
  • MemSQL
  • Hana
  • Kudu
  • FiloDB
  • DB2
  • SQLServer (JDBC)
  • 甲骨文 (JDBC)
  • MySQL (JDBC)

  • 数据库、NoSQL、连接器
  • Cassandra
  • HBase
  • Druid
  • Ampool
  • Riak
  • Aerospike
  • Cloudant

  • 数据库、文档、连接器
  • MongoDB
  • Couchbase

  • 数据库、图形、连接器
  • Neo4j
  • OrientDB

  • 搜索、文档、连接器
  • Elasticsearch
  • Solr

  • 数据网格、SQL、连接器
  • Ignite

  • 数据网格、NoSQL、连接器
  • Infinispan
  • Hazelcast
  • Redis

  • 文件系统,文件,集成
  • HDFS

  • 文件系统、文件、连接器
  • S3
  • Alluxio

  • 数据仓库、SQL、连接器
  • Redshift
  • Snowflake
  • BigQuery
  • Aster
  • 关于apache-spark - 如何将每个 DStream 保存/插入到永久表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650298/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com