有没有可能在不使用Apache Spark的情况下从Scala中读取拼图文件?
我发现了一个项目,它允许我们使用普通的scala读写avro文件。
https://github.com/sksamuel/avro4s
然而,我找不到一种方法来读写拼图文件使用普通的scala程序而不使用Spark?
发布于 2016-02-06 18:08:14
是的,你不需要使用Spark来读/写拼花。只需在Scala代码中直接使用parquet (这就是Spark正在做的事情):http://search.maven.org/#search%7Cga%7C1%7Cparquet
发布于 2016-02-24 13:58:29
使用parquet-mr项目就足够简单了,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 GenericRecords,但如果您想将其转换为scala case类,那么您可以使用我的Avro4s库,就像您在问题中所链接的那样,为您进行编组。假设您使用的是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发布于 2016-02-24 19:39:31
还有一个相对较新的项目,名为eel,这是一个轻量级(非分布式处理)工具包,用于在小范围内使用一些“大数据”技术。
https://stackoverflow.com/questions/35235018
复制相似问题