Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
不使用Spark从Scala读取拼花地板文件_Scala - Fatal编程技术网

不使用Spark从Scala读取拼花地板文件

不使用Spark从Scala读取拼花地板文件,scala,Scala,不使用ApacheSpark就可以从Scala读取拼花文件吗 我发现了一个允许我们使用纯scala读写avro文件的项目 但是,如果不使用Spark,我无法找到使用普通scala程序读取和写入拼花地板文件的方法?是的,您不必使用Spark来读取/写入拼花地板。 只要直接从Scala代码中使用拼花地板库(Spark就是这么做的):使用这个项目非常简单,Alexey Raga在回答中提到了这个项目 一些示例代码 val reader = AvroParquetReader.builder[Gene

不使用ApacheSpark就可以从Scala读取拼花文件吗

我发现了一个允许我们使用纯scala读写avro文件的项目


但是,如果不使用Spark,我无法找到使用普通scala程序读取和写入拼花地板文件的方法?

是的,您不必使用Spark来读取/写入拼花地板。
只要直接从Scala代码中使用拼花地板库(Spark就是这么做的):

使用这个项目非常简单,Alexey Raga在回答中提到了这个项目

一些示例代码

val reader = AvroParquetReader.builder[GenericRecord](path).build().asInstanceOf[ParquetReader[GenericRecord]]
// iter is of type Iterator[GenericRecord]
val iter = Iterator.continually(reader.read).takeWhile(_ != null)
// if you want a list then...
val list = iter.toList
这将返回一个标准的Avro
GenericRecord
s,但是如果您想将其转换为scala case类,那么您可以使用问题中链接到的我的库为您进行编组。假设您使用的是1.30或更高版本,则:

case class Bibble(name: String, location: String)
val format = RecordFormat[Bibble]
// then for a given record
val bibble = format.from(record)
显然,我们可以在一个步骤中将其与原始迭代器相结合:

val reader = AvroParquetReader.builder[GenericRecord](path).build().asInstanceOf[ParquetReader[GenericRecord]]
val format = RecordFormat[Bibble]
// iter is now an Iterator[Bibble]
val iter = Iterator.continually(reader.read).takeWhile(_ != null).map(format.from)
// and list is now a List[Bibble]
val list = iter.toList

还有一个相对较新的项目,名为this is lightweight(非分布式处理)toolkit,用于在小型计算机中使用一些“大数据”技术

你有没有关于如何使用拼花库读取拼花文件的例子,我不能使用拼花mr项目,因为它在我的公司没有得到批准。嗨@monkjack谢谢你的示例代码,它真的很有帮助。请您简要说明一下
builder[genericord](path).build()
Iterator.continuously(reader.read).takeWhile(!=null).map(format.from)
我几个月前就开始研究大数据了,上述方法的文档对我来说真的很难理解。你能详细说明导入什么吗?例如,代码开头的“path”必须是实现“InputFile”的东西。。。这到底是什么?我们应该如何实现它?本例中的路径是hadoop路径,因此您需要类路径上的hadoop库。对于嵌套的case类似乎不起作用。最近有人看到这个工作吗?