首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不使用Spark从Scala读取拼图文件

不使用Spark从Scala读取拼图文件
EN

Stack Overflow用户
提问于 2016-02-06 07:02:15
回答 3查看 11.7K关注 0票数 22

有没有可能在不使用Apache Spark的情况下从Scala中读取拼图文件?

我发现了一个项目,它允许我们使用普通的scala读写avro文件。

https://github.com/sksamuel/avro4s

然而,我找不到一种方法来读写拼图文件使用普通的scala程序而不使用Spark?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-06 18:08:14

是的,你不需要使用Spark来读/写拼花。只需在Scala代码中直接使用parquet (这就是Spark正在做的事情):http://search.maven.org/#search%7Cga%7C1%7Cparquet

票数 3
EN

Stack Overflow用户

发布于 2016-02-24 13:58:29

使用parquet-mr项目就足够简单了,Alexey Raga在他的回答中也提到了这个项目。

一些示例代码

代码语言:javascript
运行
复制
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或更高版本,则:

代码语言:javascript
运行
复制
case class Bibble(name: String, location: String)
val format = RecordFormat[Bibble]
// then for a given record
val bibble = format.from(record)

显然,我们可以在一个步骤中将其与原始迭代器相结合:

代码语言:javascript
运行
复制
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
票数 20
EN

Stack Overflow用户

发布于 2016-02-24 19:39:31

还有一个相对较新的项目,名为eel,这是一个轻量级(非分布式处理)工具包,用于在小范围内使用一些“大数据”技术。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35235018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档