Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 如何使用Spark跟踪HDFS文件?_Hadoop_Apache Spark_Hdfs_Logstash_Spark Streaming - Fatal编程技术网

Hadoop 如何使用Spark跟踪HDFS文件?

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

我使用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.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,因为文件可能非常大,是否可以只加载新的部分而不是全部文件?