我试图找出这两个问题的正确答案,这两个问题都涉及将数据加载到我在网上找到的Hadoop,作为我研究Hadoop开发的材料和案例研究的一部分 .
第一个问题是:
You have user profile records in your OLPT database, that you want to join with web logs you have already ingested into the Hadoop file system. How will you obtain these user records?
A. HDFS命令
B. Pig LOAD命令
C. Sqoop进口
D. Hive LOAD DATA命令
E.用Flume剂摄取
F.使用Hadoop Streaming进行摄取
我发现不同的资源表明不同的答案作为正确的答案(B / C)
第二个问题是:
You want to understand more about how users browse your public website, such as which pages they visit prior to placing an order. You have a farm of 200 web servers hosting your website. How will you gather this data for your analysis?
A.使用Flume将服务器Web日志提取到HDFS .
B.编写MapReduce作业,使用映射器的Web服务器,并减少Hadoop集群节点 .
C.使用Sqoop将所有用户的点击从OLTP数据库导入Hadoop .
D.使用Hadoop Streaming将这些点击流引入Hadoop .
E.从Web服务器中对Weblog进行采样,使用curl将它们复制到Hadoop中 .
这里建议的答案是A或B,取决于来源......
EDIT:
这是对答案B的解释,我发现这让我对答案三思而后行:
用于解析Weblog的Hadoop MapReduce以下是使用Hadoop MapReduce解析日志文件的步骤:
使用此Hadoop命令将日志文件加载到HDFS位置:hadoop fs -put
Opencsv2.3.jar框架用于解析日志记录 .
下面是Mapper程序,用于从HDFS位置解析日志文件 .
public static class ParseMapper
extends Mapper<Object, Text, NullWritable,Text > {
private Text word = new Text();
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
CSVParser parse = new CSVParser(' ','\"');
String sp[]=parse.parseLine(value.toString());
int spSize=sp.length;
StringBuffer rec= new StringBuffer();
for(int i=0;i<spSize;i++){
rec.append(sp[i]);
if(i!=(spSize-1))
rec.append(",");
}
word.set(rec.toString());
context.write(NullWritable.get(), word);
}
}
<\EDIT>
很高兴得到这些问题的绝对答案,Gday,D .
2 回答
1是C. Sqoop是从数据库摄取到hdfs的方法 . 它是为此目的而构建和优化的 . 2是A.同样,实时收集大量博客是一个常见的Flume用例 .