使用Hadoop或HBase或Hive有什么好处?
根据我的理解,HBase避免使用map-reduce,并且在HDFS之上具有面向列的存储.Hive是Hadoop和HBase的类似sql的接口.
我也想知道Hive与Pig的比较.
这是一个天真的问题,但我是NoSQL范式的新手并且对此并不了解.所以,如果有人可以帮助我清楚地理解HBase和Hadoop之间的区别,或者给出一些可能有助于我理解差异的指针.
直到现在,我做了一些研究和acc.根据我的理解,Hadoop提供框架来处理HDFS中的原始数据块(文件),而HBase是Hadoop之上的数据库引擎,它基本上使用结构化数据而不是原始数据块.与SQL一样,Hbase在HDFS上提供逻辑层.这是对的吗?
请随时纠正我.
谢谢.
如何从solr命令中删除所有数据?我们正在使用solr与lily和hbase.
如何从hbase和solr中删除数据?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
在研究了大规模数据存储解决方案之后,我几乎落在了卡桑德拉.但它普遍认为Hbase是大规模数据处理和分析的更好解决方案.
虽然两者都是相同的键/值存储,并且两者都是/可以运行(最近的Cassandra)Hadoop层,但是当大数据需要处理/分析时,Hadoop是更好的候选者.
我也在http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved/找到了关于这两方面的详细信息.
但我仍然在寻找Hbase的具体优势.
虽然我更加信服Cassandra,因为它简单易用,无需添加节点和无缝复制,也没有故障点功能.它还保留了二级索引功能,因此它是一个很好的优点.
我有兴趣了解最近发布的(http://mirror.facebook.com/facebook/hive/hadoop-0.17/)Hive在性能方面与HBase的比较.Hive使用的类似SQL的接口比我们实现的HBase API要好得多.
我目前正在为基于Web的应用程序设计架构,该架构还应提供某种图像存储.用户可以将照片上传为服务的关键功能之一.同时查看这些图像将是主要用途之一(通过网络).
但是,我不确定如何在我的应用程序中实现这种可伸缩的图像存储组件.我已经考虑过不同的解决方案,但由于缺少经验,我期待听到您的建议.除了图像之外,还必须保存元数据.以下是我最初的想法:
使用像HDFS这样的(分布式)文件系统,并将专用的Web服务器准备为"文件系统客户端",以便保存上传的图像和服务请求.图像元数据保存在附加数据库中,包括每个图像的文件路径信息.
在HDFS之上使用像HBase这样的面向BigTable的系统,并将图像和元数据保存在一起.同样,Web服务器桥接图像上传和请求.
使用像CouchDB这样的完全无模式数据库来存储图像和元数据.此外,使用基于HTTP的RESTful API将数据库本身用于上载和发送.(附加问题:CouchDB确实通过Base64保存blob.但它能否以image/jpeg等形式返回数据)?
现在我ResultScanner像这样实现行计数
for (Result rs = scanner.next(); rs != null; rs = scanner.next()) {
number++;
}
Run Code Online (Sandbox Code Playgroud)
如果数据达到数百万计算时间很大.我想实时计算我不想使用Mapreduce
如何快速计算行数.
HBase有没有像SQL LIMIT查询一样的命令?
我可以通过setStart和setEnd,但我不想迭代所有行.
我正在尝试将CSV文件加载到Hive表中,如下所示:
CREATE TABLE mytable
(
num1 INT,
text1 STRING,
num2 INT,
text2 STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
LOAD DATA LOCAL INPATH '/data.csv'
OVERWRITE INTO TABLE mytable;
Run Code Online (Sandbox Code Playgroud)
csv由逗号(,)分隔,如下所示:
1, "some text, with comma in it", 123, "more text"
Run Code Online (Sandbox Code Playgroud)
这将返回损坏的数据,因为第一个字符串中有一个','.
有没有办法设置文本分隔符或让Hive忽略字符串中的','?
我无法更改csv的分隔符,因为它是从外部源中提取的.
下面的代码将从hbase读取,然后将其转换为json结构并转换为schemaRDD,但问题是我using List要存储json字符串然后传递给javaRDD,对于大约100 GB的数据,master将被加载内存中的数据.从hbase加载数据然后执行操作然后转换为JavaRDD的正确方法是什么.
package hbase_reader;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.rdd.RDD;
import org.apache.spark.sql.api.java.JavaSQLContext;
import org.apache.spark.sql.api.java.JavaSchemaRDD;
import org.apache.commons.cli.ParseException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.spark.SparkConf;
import scala.Function1;
import scala.Tuple2;
import scala.runtime.AbstractFunction1;
import com.google.common.collect.Lists;
public class hbase_reader {
public static void main(String[] args) throws IOException, ParseException {
List<String> jars = Lists.newArrayList("");
SparkConf spconf = new …Run Code Online (Sandbox Code Playgroud) hbase ×10
hadoop ×7
hdfs ×3
hive ×3
nosql ×3
apache-pig ×1
apache-spark ×1
bigdata ×1
cassandra ×1
couchdb ×1
delimiter ×1
difference ×1
rdd ×1
solr ×1
storage ×1