没有Hadoop的实木复合地板?

时间:2015-03-26 13:35:07

标签: hadoop hdfs parquet

我想在我的一个项目中使用镶木地板作为柱状存储。但我不想依赖于hadoop / hdfs库。是否可以在hdfs外使用镶木地板?或者什么是最小依赖?

6 个答案:

答案 0 :(得分:8)

调查同样的问题我发现显然目前不可能。 我找到了这个git issue,它建议将镶木地板与hadoop api脱钩。显然它还没有完成。

在Apache Jira中,我找到了一个issue,它要求在hadoop之外读取一个镶木地板文件。写作时尚未解决。

修改

不再在github上跟踪问题(上面的第一个链接已经死了)。我发现的一个较新问题位于apache's Jira,标题如下:

  

可以轻松地在java中读取和编写镶木地板文件,而不依赖于hadoop

答案 1 :(得分:2)

参加晚会,但我一直致力于实现这一目标:https://github.com/jmd1011/parquet-readers

这仍处于开发阶段,但最终的实施应该在一两个月内完成。

编辑:几个月后,仍然在努力!它正在积极发展,只需要比预期更长的时间。

答案 2 :(得分:1)

您在Parquet中有哪些类型的数据?您不需要HDFS来读取Parquet文件。这绝对不是先决条件。我们在Incorta使用镶木地板文件作为我们的临时表。我们不附带HDFS,但是,如果需要,您可以将文件存储在HDFS上。显然,我们在Incorta可以直接从镶木地板文件中读取,但您也可以使用Apache Drill进行连接,使用file:///作为连接而不是hdfs:///请参阅下面的示例。

要读取或写入Parquet数据,您需要在存储插件格式定义中包含Parquet格式。 dfs插件定义包括Parquet格式。

{
  "type" : "file",
  "enabled" : true,
  "connection" : "file:///",
  "workspaces" : {
  "json_files" : {
  "location" : "/incorta/tenants/demo//drill/json/",
  "writable" : false,
  "defaultInputFormat" : json
  } 
},

答案 3 :(得分:1)

您不需要使用HDFS / Hadoop即可使用Parquet文件。有多种使用木地板的方法。

  • 您可以使用Apache Spark访问它。
  • 如果您使用的是AWS,则可以 直接从Redshift或Athena加载或访问它
  • 如果您在 Azure,您可以从SQL DataWarehouse或SQL加载或访问它 服务器
  • 在GCP中也是如此

答案 4 :(得分:0)

如今,您不必像以前那样严重依赖hadoop。

请参阅我的另一篇文章:How to view Apache Parquet file in Windows?

答案 5 :(得分:0)

由于它只是一种文件格式,因此很可能将实木复合地板与Hadoop生态系统脱钩。如今,我能找到的最简单的方法是通过Apache Arrow,有关Python示例,请参见here

以下是PyArrow官方文档的一小段摘录:

写作

In [2]: import numpy as np

In [3]: import pandas as pd

In [4]: import pyarrow as pa

In [5]: df = pd.DataFrame({'one': [-1, np.nan, 2.5],
   ...:                    'two': ['foo', 'bar', 'baz'],
   ...:                    'three': [True, False, True]},
   ...:                    index=list('abc'))
   ...: 

In [6]: table = pa.Table.from_pandas(df)

In [7]: import pyarrow.parquet as pq

In [8]: pq.write_table(table, 'example.parquet')

阅读

In [11]: pq.read_table('example.parquet', columns=['one', 'three'])