我在UNIX文件系统中有file.txt.其内容如下:
{abc}]}
{pqr}]}
Run Code Online (Sandbox Code Playgroud)
我想将此file.txt转换为:
[
{abc}]},
{pqr}]}
]
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的shell脚本来做到这一点:
sed -i 's/}]}/}]},/g' file.txt
sed -i '1i [' file.txt
sed -i '$ s/}]},/}]}]/g' file.txt
Run Code Online (Sandbox Code Playgroud)
我的问题是如果这个文件存在于/测试位置的HDFS上.
如果我使用: sed -i 's/}]}/}]},/g' /test/file.txt
它会查看unix partition/test并说文件不存在.
如果我使用: sed -i 's/}]}/}]},/g' | hadoop fs -cat /test/file.txt
它说----- sed:没有输入文件,然后根据cat命令打印file.txt的内容.
如果我使用 hadoop fs -cat /test/file.txt | sed -i 's/}]}/}]},/g'
它说---- sed:没有输入文件cat:无法写入输出流
那么,我该如何用其他字符串替换HDFS文件中的字符串呢?
在执行“hadoop namenode -format”时,出现以下消息。
Re-format filesystem in Storage Directory /opt/data/temp/dfs/name ? (Y or N)
Run Code Online (Sandbox Code Playgroud)
在这里应该给予什么?“Y”或“N”。
如果给Y,它会丢失HDFS中的数据吗?
我有一个csv文件,其中的数据格式如下:
"SomeName1",25,"SomeString1"
"SomeName2",26,"SomeString2"
"SomeName3",27,"SomeString3"
Run Code Online (Sandbox Code Playgroud)
我正在将此CSV加载到配置单元表中。在表中,第1列和第3列与我不需要的引号一起插入。我希望第1 SomeName1列是第3列SomeString1
我尝试过
WITH SERDEPROPERTIES (
"separatorChar" = "\t",
"quoteChar" = "\""
)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,并保留“”。
这里应该采取什么方法?
表创建语句:
CREATE TABLE `abcdefgh`(
`name` string COMMENT 'from deserializer',
`age` string COMMENT 'from deserializer',
`value` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'quoteChar'='\"',
'separatorChar'='\t')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://a-b-c-d-e:9000/user/hive/warehouse/abcdefgh'
TBLPROPERTIES (
'numFiles'='1',
'numRows'='0',
'rawDataSize'='0',
'totalSize'='3134916',
'transient_lastDdlTime'='1490713221')
Run Code Online (Sandbox Code Playgroud) 我的 JSON 文件是一个时间戳字段,它采用 UNIX 上传时间戳格式,如1501580484655. 这将转换为格林威治标准时间:01-08-2017 9:41:24.655AM
我尝试将此时间戳转换为人类可读的时间格式,直到毫秒不起作用。
到目前为止,我已经尝试过以下方法:
1- select TO_DATE(1501580484655) from (VALUES(1));
O/P 2017-08-01到目前为止还可以,但我想要到毫秒。
2- select TO_DATE(1501580484655,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484655" is malformed at "4655"
3- select TO_DATE(1501580484,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484" is malformed at "4"
4- select TO_DATE(150158048,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));
O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "150158048" is too short
5- SELECT TO_TIMESTAMP(1501580484655) …