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
Apache spark 从外部源创建Spark RDD或数据帧_Apache Spark - Fatal编程技术网

Apache spark 从外部源创建Spark RDD或数据帧

Apache spark 从外部源创建Spark RDD或数据帧,apache-spark,Apache Spark,我正在用Java构建一个实质性的应用程序,它使用Spark和Json。我预计应用程序将处理大型表,我希望使用Spark SQL对这些表执行查询。我正在尝试使用流式体系结构,以便数据直接从外部源流入Spark RDD和数据帧。我在构建应用程序时遇到两个困难 首先,我想使用JavaSparkContext或SparkSession来并行化数据。两者都有一个接受Java列表作为输入的方法。但是,对于流媒体,我不想在内存中创建列表。我宁愿提供Java流或迭代器。我知道了如何包装这两个对象,使它们看起来像

我正在用Java构建一个实质性的应用程序,它使用Spark和Json。我预计应用程序将处理大型表,我希望使用Spark SQL对这些表执行查询。我正在尝试使用流式体系结构,以便数据直接从外部源流入Spark RDD和数据帧。我在构建应用程序时遇到两个困难

首先,我想使用JavaSparkContext或SparkSession来并行化数据。两者都有一个接受Java列表作为输入的方法。但是,对于流媒体,我不想在内存中创建列表。我宁愿提供Java流或迭代器。我知道了如何包装这两个对象,使它们看起来像一个列表,但在读取数据之前,它无法计算列表的大小。有时这是可行的,但有时Spark在读取整个输入数据之前调用size方法,这会导致不支持的操作异常

有没有办法直接从Java流或迭代器创建RDD或数据帧

对于我的第二个问题,Spark可以直接从JSON创建数据帧,这是我首选的方法。但是,DataFrameReader类具有用于此操作的方法,这些方法需要字符串来指定路径。路径的性质没有文档记录,但我假设它表示文件系统中的路径,或者可能是URL或URI(文档没有说明Spark如何解析路径)。对于测试,我更喜欢将JSON作为字符串提供,在生产中,我希望用户指定数据驻留的位置。由于这个限制,我不得不进行自己的JSON反序列化,但由于与Spark任务并行化相关的问题,它无法工作

Spark可以从InputStream或类似对象读取JSON吗

这两个问题似乎真的限制了Spark的适应性。我有时觉得我正试图用花园里的软管把油轮装满


欢迎提供任何建议

谢谢你的建议。经过大量工作,我能够在github.com/spirom/spark-data-sources上修改这个示例。这并不简单,因为DataSourcev2API仍在不断发展,我的解决方案可能会在未来的迭代中崩溃。详细信息过于复杂,无法在此发布,因此如果您感兴趣,请直接与我联系。

如果内置数据源不适合您的要求。。您始终可以实现可以处理您的用例的自定义数据源。请添加详细信息。检查此项以了解如何创建spark datasource v2&可能它将帮助您编写自己的逻辑。。。链接-…谢谢。这看起来可能有用,但它很复杂,我需要考虑一下。我想知道为什么在我的搜索过程中,我从来没有遇到过这个问题?我要说的是,如果现有数据源不支持,您可以使用数据源api v2编写自定义逻辑