Hadoop 如何使用Spark跟踪HDFS文件?
我使用HDFS存储原始JSON行:Hadoop 如何使用Spark跟踪HDFS文件?,hadoop,apache-spark,hdfs,logstash,spark-streaming,Hadoop,Apache Spark,Hdfs,Logstash,Spark Streaming,我使用HDFS存储原始JSON行: /user/ebuildy/logs/today.json {"event":"buy", "tag1" : "20€", "tag2" : "user2"} ... 使用Elastic Logstash,webhdfs输出插件(意味着JSON行每X秒追加到today.JSON中) 另一方面,我使用apachesparksql查询数据。加载数据就像一个魔咒: CREATE TABLE events USING org.apache.spark.sql.js
/user/ebuildy/logs/today.json
{"event":"buy", "tag1" : "20€", "tag2" : "user2"}
...
使用Elastic Logstash,webhdfs输出插件(意味着JSON行每X秒追加到today.JSON中)
另一方面,我使用apachesparksql查询数据。加载数据就像一个魔咒:
CREATE TABLE events USING org.apache.spark.sql.json OPTIONS (path "hdfs://hadoop:9000/user/ebuildy/logs/today.json")
我可以用Tableau很容易地查询它(顺便说一句,很棒的工作伙伴!)
现在,我尽力实现的是将传入数据附加到Spark中(而不是HDFS文件)
实现这一点的最佳方法是什么?这样说:您的表只是RDD周围的一个包装器(带有模式和许多好东西),RDD是由load命令创建的,它从HDF读取数据并创建RDD分区 现在,RDD是不可变的。因此,添加新数据意味着(旧RDD+新数据)->新RDD
您有多种选择,但这实际上取决于您的用例。如果您希望连接Tableau,那么您是否希望创建一种ETL类型的工作负载,这种工作负载大约每30分钟运行一次?如果是这样,您可能希望管理每次从HDFS读取文件,并与现有RDD进行联合,创建一个新RDD,然后将现有RDD切换为新RDD 你好,Ayan,因为文件可能非常大,是否可以只加载新的部分而不是全部文件?