2015-09-18 78 views
0

是否有可能从本地HDFS(可以说是192.168.0.10)迁移/复制/复制/移动已处理文件(使用PIG)到cassandra(192.168.0.20)?HDFS到Cassandra

我脑子里想的是,我从字面上创建了一个java应用程序来解析文件并将它们重新插入到cassandra中。

有没有其他办法呢?

非常感谢!

回答

1

编写一个Java程序将Hadoop数据迁移到Cassandra表中实际上是一种矫枉过正。如果你偶尔执行相同的操作,情况会变得更糟。

相反,我们可以利用Hive的一个非常有用的功能,它可以帮助我们将Hive表与外部数据源集成在一起。它存储处理器API蜂巢,这与像卡桑德拉/甲骨文/ MySQL的等

已经有一个Hive-Cassandra Storage Handler API实现可用,我们可以很好地重用外部数据源的集成,请找到下面的网址相同。

https://github.com/tuplejump/cash/tree/master/cassandra-handler

的想法是创建,其被配置与关于远程卡桑德拉主机/表的信息存储处理机规格蜂巢外部表。

对此外部表执行的任何写入/读取都将由Hive通过与Cassandra进行会话的mapreduce作业处理。

我希望这是整合Hive和Cassandra的理想方式,它只需要我们很少的努力,而且效率也很高。

希望这会有所帮助。

+1

谢谢你的分享!它绝对比编写Java程序更好!我想我会用Pig cassandra扩展来解决,因为大多数HDFS中的文件都来自猪。 – kenlz

1

有几种方法可以将数据从Hadoop移动到Cassandra。

  1. 使用Java HDFS API和Cassandra API(效率低下)。
  2. 使用Java MapReduce程序(并行加载)。
  3. 使用猪(平行加载)。
  4. 使用Hive(并行加载)。
  5. 使用Spark(并行加载)。

总之猪是更容易的方式从HDFS加载数据到卡桑德拉。 猪有一种名为CassandraStorage的存储类型。它允许我们将数据并行加载到Cassandra中。

请访问以下链接了解更多信息: https://wiki.apache.org/cassandra/HadoopSupport#Pig

+0

谢谢纳迦!我现在仍然试图用猪来做这件事,但有这个错误1070:无法使用导入:[,org.apache.pig.builtin。,org.apache.pig.impl.builtin。]解决CassandraStorage。 – kenlz

+0

欢迎@kenlz,您必须将此CassandraStorage jar添加到猪类路径中。你能否检查CassandraStorage是否可用于储蓄? – Naga

+0

我固定它通过注册罐子猪,但我现在有这个错误错误2245:无法从loadFunc org.apache.cassandra.hadoop.pig.CqlNativeStorage获取架构 似乎没完没了 – kenlz