我在Impala中使用SQL来编写此查询.我正在尝试将以YYYYMMDD格式存储的日期字符串转换为日期格式,以便运行如下查询:
SELECT datadate,
session_info
FROM database
WHERE datadate >= NOW() - INTERVAL 5 DAY
ORDER BY datadate DESC;
Run Code Online (Sandbox Code Playgroud)
由于>= NOW() - INTERVAL 5 DAY代码不能与YYYYMMDD字符串一起使用,我想找到一种方法将其转换为可用于此类查询的日期格式.我的想法是它应该看起来像这样(基于关于其他SQL查询编辑器的类似问题),但它在Impala中不起作用:
SELECT datadate,
session_info,
convert(datetime, '20141008', 102) AS session_date
FROM database
WHERE session_date >= NOW() - INTERVAL 5 DAY
ORDER BY session_date DESC;
Run Code Online (Sandbox Code Playgroud)
任何人都知道在Impala中如何做到这一点?
编辑:
我终于找到了解决问题的有效方法.没有尝试使用Impala的配置CAST或CONVERT在Impala中工作,但是下面的查询解决了问题并且完全可操作,允许对包含字符串值的列执行日期数学运算:
SELECT datadate,
session_info
FROM database
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd')
GROUP BY datadate
ORDER BY datadate DESC;
Run Code Online (Sandbox Code Playgroud) 我试图在 Jupyter Notebook 中将 PySpark 数据框显示为 HTML 表,但所有方法似乎都失败了。
使用此方法显示文本格式的表格:
import pandas
df.toPandas()
Run Code Online (Sandbox Code Playgroud)
使用此方法将 HTML 表显示为字符串:
df.toPandas().to_html()
Run Code Online (Sandbox Code Playgroud)
这将打印未解析的 HTML 更漂亮,但它不会解析为表格:
print(df.toPandas().to_html())
Run Code Online (Sandbox Code Playgroud)
并且,所有这些
from IPython.display import display, HTML
HTML(df.toPandas().to_html())
print(HTML(df.toPandas().to_html()))
display(HTML(df.toPandas().to_html()))
Run Code Online (Sandbox Code Playgroud)
只需打印该对象描述:
<IPython.core.display.HTML object>
Run Code Online (Sandbox Code Playgroud)
我还可以尝试其他想法吗?
我正在尝试使用我上传到HDFS目录的CSV在Impala中创建一个表.CSV包含用引号括起来的逗号的值.
例:
1.66.96.0/19,"NTT Docomo,INC.","Ntt Docomo",9605,"NTT DOCOMO, INC."
1.66.128.0/17,"NTT Docomo,INC.","Ntt Docomo",9605,"NTT DOCOMO, INC."
1.67.0.0/17,"NTT Docomo,INC.","Ntt Docomo",9605,"NTT DOCOMO, INC."
1.67.128.0/18,"NTT Docomo,INC.","Ntt Docomo",9605,"NTT DOCOMO, INC."
1.67.192.0/19,"NTT Docomo,INC.","Ntt Docomo",9605,"NTT DOCOMO, INC."
Run Code Online (Sandbox Code Playgroud)
在帕拉的文件说,这可以用一个来解决ESCAPED BY条款.这是我目前的代码:
DROP TABLE IF EXISTS GeoIP2_ISP_Blocks_IPv4;
CREATE TABLE GeoIP2_ISP_Blocks_IPv4 (
network STRING
,isp STRING
,organization STRING
,autonomous_system_number STRING
,autonomous_system_organization STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\'
LOCATION 'hdfs://.../GeoIP2_ISP_Blocks_IPv4/';
INVALIDATE METADATA GeoIP2_ISP_Blocks_IPv4;
LOAD DATA INPATH 'hdfs://.../GeoIP2_ISP_Blocks_IPv4/'
INTO TABLE GeoIP2_ISP_Blocks_IPv4;
Run Code Online (Sandbox Code Playgroud)
我也试过使用这个ESCAPED BY '"'条款.在这两种情况下,Impala都使用引号中的逗号并将其用作分隔符,将值拆分为两列. …
我有许多 MKV 文件(每个 VLC)使用 A/52 B(又名 E-AC3)音频编解码器进行编码。我想将它们转换为 AAC,但我在使用 FFmpeg 时遇到困难。我正在运行的命令是:
ffmpeg -hwaccel auto -i original_file.mkv -y -c:v copy -c:a aac output_file.mkv
Run Code Online (Sandbox Code Playgroud)
该命令完成且没有错误。但是,生成的文件在播放时没有音频。FFmpeg的输出如下:
ffmpeg version 4.2.2-1ubuntu1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-3ubuntu1)
configuration: --prefix=/usr --extra-version=1ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame …Run Code Online (Sandbox Code Playgroud)