我已經下載了hdfs中的twitter數據,並且已經成功地在其上創建了配置單元表。 Twitter在json文件中給出了日期格式'Thu Dec 10 06:21:00 +0000 2015',並且我想將此格式轉換爲'yyy-MM-dd'我已經嘗試過內置由蜂巢提供的函數,但它們不是接受twitter提供的格式。任何人都可以幫助我轉換這種格式。Hive中的隱藏日期格式
0
A
回答
0
您需要開發基於java的UDF,與此類似: 一旦開發完成,您需要編譯爲jar將其發送到羣集,添加jar文件並創建臨時函數。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class DateTranslate extends UDF {
public String evaluate(Text str) {
SimpleDateFormat formatter = new SimpleDateFormat("<SOURCE_DATE_FORMAT>");
String transactionDate = null;
try {
transactionDate = (new SimpleDateFormat("yyyy-MM-dd") //2013-01-03
.format(formatter.parse(str.toString())))
.toString();
} catch (ParseException e) {
e.printStackTrace();
}
return transactionDate;
}
}
0
也許一個UDF是矯枉過正,你想要的只是一個快速修復,例如,那個醜陋格式的一些正則表達式按摩(警告:這是你的工作,對各類Twitter的日期對其進行全面測試,並調整相應的按摩)
select TWITTER_VOMIT
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 3) as YYYY
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 1) as MON
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 2) as DD
, concat(regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 3)
,case regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 1)
when 'Jan' then '-01-'
when 'Feb' then '-02-'
when 'Mar' then '-03-'
when 'Apr' then '-04-'
when 'May' then '-05-'
when 'Jun' then '-06-'
when 'Jul' then '-07-'
when 'Aug' then '-08-'
when 'Sep' then '-09-'
when 'Oct' then '-10-'
when 'Nov' then '-11-'
when 'Dec' then '-12-'
else '-**-'
end
,regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 2)
) as YYYY_MM_DD
from TWITTER_FEED
對於示例
twitter_vomit yyyy mon dd yyyy_mm_dd
Thu Dec 10 06:21:00 +0000 2015 2015 Dec 10 2015-12-10
0
創建一個自定義的UDF:
package org.apache.hadoop.hive.contrib.dateparser;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class dateparserHive extends UDF {
public String evaluate(Text str) {
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZZZ yyyy");
String twitterDate = null;
try {
twitterDate = (new SimpleDateFormat("yyyy-MM-dd")
.format(formatter.parse(str.toString())))
.toString();
} catch (ParseException e) {
e.printStackTrace();
}
return twitterDate;
}
}
第1步:創建一個jar文件。複製本地文件系統這個jar文件
步驟2:打開蜂房終端:
步驟3:添加JAR /home/oxigen/dateparser.jar;
第4步:創建臨時函數dateparsertwitter爲'org.apache.hadoop.hive.contrib.dateparser.dateparserHive';
第5步:從twitter限制1中選擇dateparsertwitter('Wed Mar 02 09:56:41 +0000 2016');
這應該很好!
相關問題
- 1. 隱藏在Oracle中的日期格式
- 2. Hive表列日期格式
- 3. 隱藏的c#日期時間格式到java日期時間格式
- 4. 從字符串格式到日期格式的隱藏日期輸入
- 5. 隱藏字符串日期到日期時間M-D格式
- 6. 隱藏日期
- 7. 日期選擇器中隱藏日期
- 8. 如何在JSON數據中隱藏日期時間格式?
- 9. 隱藏日期時間的ASP.NET MVC格式
- 10. 從datepicker隱藏的日期
- 11. 不同格式的Hive中的日期轉換
- 12. Hive中的日期格式03-MAR-14 12:00:00
- 13. 無法更改Hive中的日期格式
- 14. 調整日期格式,更改似乎隱藏代碼?
- 15. Hive dataype日期
- 16. 根據日期隱藏行
- 17. 日期管隱藏零
- 18. 帶時區的HIVE日期時間格式
- 19. Sqlite3隱藏的列格式
- 20. 在表中隱藏javascript日期
- 21. Android - 在datepickerdialog中隱藏日期字段
- 22. 在Drupal中隱藏結束日期
- 23. Hive如何將日期字符串只轉換爲日期格式?
- 24. Sqoop從Hive表(avro格式)日期(或字符串)列到SQL Server日期列?
- 25. Fullcalendar - 在網格標題中隱藏日期
- 26. 全格式中的eventRender日期格式
- 27. 日期格式化IOS中的格式
- 28. 日期格式爲日期
- 29. 日期(「8601格式日期」)?
- 30. 日期格式日期