sql - hadoop操作只写一行?

标签 sql hadoop hive

我正在尝试处理 tweets-clean.txt。通过处理,我的意思是获取每个用户标识的较早日期、最新日期和记录数,以及每行中的用户标识本身。我只得到一行,该行中只有最小和最大日期。我做错了什么?

CREATE TABLE temptweets16 (
    date        string,
    userid      string
) ;

LOAD DATA LOCAL INPATH 'tweets-clean.txt' INTO TABLE temptweets16;

INSERT OVERWRITE LOCAL DIRECTORY './hive-output'
SELECT 
    userid as userid,
    MIN(FROM_UNIXTIME(UNIX_TIMESTAMP( date, 'EEE MMM dd HH:mm:ss Z yyyy' ))) as mindate,
    MAX(FROM_UNIXTIME(UNIX_TIMESTAMP( date, 'EEE MMM dd HH:mm:ss Z yyyy' ))) as maxdate,
    COUNT (userid) as count
FROM temptweets16
GROUP BY userid;

输入示例行:

Tue Feb 11 05:04:10 +0000 2014  1046894028

只有一行输出:

\N2014-02-11 00:02:102014-02-11 00:04:100

最佳答案

您需要在 CREATE TABLE 语句中指定数据的格式,如果它是制表符分隔的文件,您可以说:

CREATE TABLE temptweets16 (
    date        string,
    userid      string
) 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

关于sql - hadoop操作只写一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22123025/

相关文章:

hadoop - Pig中的NoSuchObjectException使Hacatalog异常

csv - 使用MapReduce将CSV批量加载到Hbase

java - 如何使用 JDBC API 捕获 Hive 退出状态或错误代码

hadoop - Hbase HMaster 未运行

hadoop - 使用假脱机目录写入水槽如何重命名文件

mysql - 如何将表内的属性引用到同一表内新行内的值

MySQL 导出到输出文件 : CSV escaping chars

sql - 在 mysql 数据库中选择 1 或 0 时出现问题

sql - Postgres max 在几列上

java - 从 FSDataInputStream 转换为 FileInputStream