我在一个目录中有许多文件,每个文件包含跨多行的文本。目前,我使用以下代码将所有这些文件读取到spark数据集(
val ddf = spark.read.text("file:///input/*")
但是,这会创建一个数据集,其中每一行都是一行,而不是一个文件。我希望数据集中每行都有一个文件(作为字符串)。
如何在不迭代每个文件并将其作为RDD单独读取的情况下实现这一点?
@mrsrinivas的答案的另一种选择是按输入文件名分组。鉴于结构:
evan@vbox>~/junk/so> find .
.
./d2
./d2/t.txt
./d1
./d1/t.txt
evan@vbox>~/junk/so> cat */*.txt
d1_1
d1_2
d2_1
d2_2
我们可以根据输入文件收集列表,如下所示:
scala prettyprint-override">scala> val ddf = spark.read.textFile("file:///home/evan/junk/so/*").
| select($"value", input_file_name as "fName")
ddf: org.apache.spark.sql.DataFrame = [value: string, fName: string]
scala> ddf.show(false)
+-----+----------------------------------+
|value|fName |
+-----+----------------------------------+
|d2_1 |file:///home/evan/junk/so/d2/t.txt|
|d2_2 |file:///home/evan/junk/so/d2/t.txt|
|d1_1 |file:///home/evan/junk/so/d1/t.txt|
|d1_2 |file:///home/evan/junk/so/d1/t.txt|
+-----+----------------------------------+
scala> ddf.groupBy("fName").agg(collect_list($"value") as "value").
| drop("fName").show
+------------+
| value|
+------------+
|[d1_1, d1_2]|
|[d2_1, d2_2]|
+------------+
在SparkContext上使用wholeTextFiles()
val rdd: RDD[(String, String)] = spark.sparkContext
.wholeTextFiles("file/path/to/read/as/rdd")
SparkContext。wholeTextFiles允许您读取包含多个小文本文件的目录,并以(文件名、内容)对的形式返回每个小文本文件。这与textFile不同,textFile在每个文件中每行返回一条记录。
我有一个使用Java DSL配置的集成流,它使用从Ftp服务器中提取文件,然后将其转换为;然后我有一个方法,它触发我的批处理作业,所有的工作都是按要求进行的,但是Ftp文件夹中的每个文件都是按顺序运行的 我在Transformerendpoint中添加了它为每个文件打印相同的线程名称 这是我到现在为止所尝试的 1.任务执行器bean 感谢任何帮助 谢谢
我正在使用一个表在Jaspersoft Studio 5.6.1中创建简单的报告。 通过 JRBeanCollectionDataSource 从 Java 向此报告发送数据。 在报告中,我已经可以获取此数据 vie 字段:报告- 现在我可以显示输入的数据了。 但如果我想在表中执行,我需要创建数据集(为什么?)并选择“使用用于填充主报告的相同连接”。将相同的字段添加到新数据集没有帮助,也没有为数据
问题内容: 我正在寻找一种使用Python()将数据附加到文件内现有数据集的可能性。 我的项目的简短介绍:我尝试使用医学图像数据训练CNN。由于在将数据转换为NumPy数组的过程中大量数据和大量内存的使用,我需要将“转换”拆分为几个数据块:加载和预处理前100张医学图像,并将NumPy数组保存到hdf5文件,然后加载接下来的100个数据集并追加现有文件,依此类推。 现在,我尝试存储前100个转换的
我有多个csv文件保存在一个文件夹中,具有相同的列布局,并希望将其作为pandas中的数据帧加载到python中。 这个问题与这条线索非常相似。 我使用以下代码: 还有更好的解决方案吗? 这需要很多时间。 谢啦
问题内容: 我将多个csv文件保存在一个具有相同列布局的文件夹中,并希望将其作为pandas中的数据框加载到python中。 我正在使用以下代码: 是否有其他软件包更好的解决方案? 这需要很多时间。 谢谢 问题答案: 我建议使用列表理解:
我有两个大约150 MB的大txt文件。我想从file1的每一行读取一些数据,并扫描file2的所有行,直到找到匹配的数据。如果没有找到匹配的数据,我希望将该行输出到另一个文件中。 选项2:使用上面提到的三个读取器对文件1中的每个记录读取文件2 n次。每次读取后,我必须关闭文件并再次读取。我在想最好的办法是什么。我还有别的选择吗