You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Nick Dimiduk (JIRA)" <ji...@apache.org> on 2014/02/04 02:05:09 UTC
[jira] [Resolved] (HBASE-10385) ImportTsv to parse date time from
typical loader formats
[ https://issues.apache.org/jira/browse/HBASE-10385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nick Dimiduk resolved HBASE-10385.
----------------------------------
Resolution: Won't Fix
> ImportTsv to parse date time from typical loader formats
> --------------------------------------------------------
>
> Key: HBASE-10385
> URL: https://issues.apache.org/jira/browse/HBASE-10385
> Project: HBase
> Issue Type: New Feature
> Components: mapreduce
> Affects Versions: 0.96.1.1
> Reporter: Vijay Sarvepali
> Priority: Minor
> Labels: importtsv
> Attachments: HBASE-10385.patch
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> Simple patch to enable parsing of standard date time fields from TSV files into Hbase.
> ***************
> *** 57,62 ****
> --- 57,70 ----
> import com.google.common.base.Splitter;
> import com.google.common.collect.Lists;
>
> + //2013-08-19T04:39:07
> + import java.text.DateFormat;
> + import java.util.*;
> + import java.text.SimpleDateFormat;
> + import java.text.ParseException;
> +
> +
> +
> /**
> * Tool to import data from a TSV file.
> *
> ***************
> *** 220,229 ****
> getColumnOffset(timestampKeyColumnIndex),
> getColumnLength(timestampKeyColumnIndex));
> try {
> ! return Long.parseLong(timeStampStr);
> } catch (NumberFormatException nfe) {
> // treat this record as bad record
> ! throw new BadTsvLineException("Invalid timestamp " + timeStampStr);
> }
> }
>
> --- 228,239 ----
> getColumnOffset(timestampKeyColumnIndex),
> getColumnLength(timestampKeyColumnIndex));
> try {
> ! return Long.parseLong(timeStampStr);
> } catch (NumberFormatException nfe) {
> + // Try this record with string to date in mseconds long
> + return extractTimestampInput(timeStampStr);
> // treat this record as bad record
> ! //throw new BadTsvLineException("Invalid timestamp " + timeStampStr);
> }
> }
>
> ***************
> *** 243,248 ****
> --- 253,274 ----
> return lineBytes;
> }
> }
> + public static long extractTimestampInput(String strDate) throws BadTsvLineException{
> + final List<String> dateFormats = Arrays.asList("yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd'T'HH:mm:ss");
> +
> + for(String format: dateFormats){
> + SimpleDateFormat sdf = new SimpleDateFormat(format);
> + try{
> + Date d= sdf.parse(strDate);
> + long msecs = d.getTime();
> + return msecs;
> + } catch (ParseException e) {
> + //intentionally empty
> + }
> + }
> + // If we come here we have a problem with converting timestamps for this row.
> + throw new BadTsvLineException("Invalid timestamp " + strDate);
> + }
>
> public static class BadTsvLineException extends Exception {
> public BadTsvLineException(String err) {
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)