我刚刚将spark 1.6.0解压缩并安装到具有全新安装的hadoop 2.6.0和hive 0.14的环境中.
我已经验证了hive,beeline和mapreduce在示例中运行良好.
但是,只要我sc.textfile()
在spark-shell中运行,它就会返回一个错误:
$ spark-shell
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.6.0
/_/
Using Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67)
Type in expressions to have them evaluated.
Type :help for more information.
Spark context available as sc.
SQL context available as sqlContext.
scala> val textFile = sc.textFile("README.md")
java.lang.IllegalArgumentException: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.2-2ccaf764-c7c4-4ff1-a68e-bbfdec0a3aa1-libsnappyjava.so: /tmp/snappy-1.1.2-2ccaf764-c7c4-4ff1-a68e-bbfdec0a3aa1-libsnappyjava.so: failed to map segment from …
Run Code Online (Sandbox Code Playgroud) 我的第一次尝试是:
CREATE TABLE t1 (
a string )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE ;
Run Code Online (Sandbox Code Playgroud)
但这样做的结果是:
CREATE TABLE t1 (
a string )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ;
Run Code Online (Sandbox Code Playgroud)
这似乎导致二进制文件而不是文本文件。
我将数据插入 t1:
insert into t1 values ( "hello");
INFO : Loading data to t1
INFO : Table t1 stats: [numFiles=1, numRows=1, totalSize=14, rawDataSize=5]
No rows affected (86.403 seconds)
Run Code Online (Sandbox Code Playgroud)
结果的 hdfs 文件是:
14 2017-10-18 17:20 t1/000000_0.deflate
Run Code Online (Sandbox Code Playgroud)
并且内容是二进制的。我真正需要的是一个文本文件。
那么,是否有可能获得文本格式的 hdfs …
我有下面的示例代码。最后一行之后我还需要游标提交吗?如果这很重要的话,我正在针对 SQL Server 2016 DB 主机运行。
import pyodbc
cnxn = pyodbc.connect('Driver=SQL Server;Server=localhost;Database=mydb;Trusted_Connection=yes;')
cnxn.autocommit = True
cursor = cnxn.cursor()
cursor.execute('update mytable set myfield=1')
Run Code Online (Sandbox Code Playgroud) 在 python 中,我可以编写一个类似的表达式3 < a < 10
,并且它会根据and
条件进行评估。
也就是说,3 < a < 10
是一个语法糖:3 < a and a < 10
是否有类似的Pythonic方式将其写为or
条件?
我已经在 hadoop 2.6.0 之上安装了 hive 0.14。
设置主要涉及提取 tar.bin 文件。
我按照本指南进行设置。
http://www.ishanguliani.com/content/hive-0140-setup-ubuntu
我用命令行启动 hiveserver2:
( $HIVE_HOME/bin/hiveserver2 &> hiveserver.log & )
Run Code Online (Sandbox Code Playgroud)
现在,我想知道停止 hiveserver2 的正确方法是什么。我可以杀死它,但我怀疑这是否提供了一个优雅的退出。
我已经看过所有其他帖子并做了相当多的研究,但我仍然在摸不着头脑.
这是问题所在:
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=u'My Mate\u2019s'
>>> b='\xe2\x80\x99s BBQ'
>>> print a
My Mate’s
>>> print b
’s BBQ
Run Code Online (Sandbox Code Playgroud)
因此,变量本身就是精细打印的,但是打印连接:
>>> print a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
给出解码错误.所以,我尝试解码字符串:
>>> print a.decode('utf-8')+b.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", …
Run Code Online (Sandbox Code Playgroud) 以下讨论似乎表明 Hive 时间戳有一个时区:https : //community.hortonworks.com/questions/83523/timestamp-in-hive-without-timezone.html
apache wiki 说“时间戳被解释为无时区并存储为与 UNIX 纪元的偏移量。”
我指的是:https : //cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-TimestampstimestampTimestamps
如果我使用如下代码:
from_unixtime(unix_timestamp(ts_field,'yyyy-MM-dd HH:mm:ss'), 'yyyy-MM-dd HH:mm:ss z') as ts_field_tz
Run Code Online (Sandbox Code Playgroud)
这似乎暴露了一个潜在的时区值。
为什么星号在 SELECT 子句中单独使用时在 oracle sql 中使用星号完全有效,但当 SELECT 中存在其他表达式时会导致错误?
例如:
select * from table1 -- is ok
Run Code Online (Sandbox Code Playgroud)
但:
select field, * from table -- is not ok
Run Code Online (Sandbox Code Playgroud) 我想知道如何利用spark SQL利用内存处理.如果有的话,目前支持使用内存中对象运行spark SQL的方法是什么?
是否可以将CREATE TABLE AS
语句的目标作为内存中的表?
是否可以在FROM
子句中引用内存中的对象,如数据帧?
我目前对火花的理解是有限的,所以如果看起来太简单,请原谅我的问题.我将不胜感激任何建议或指导.
我正在尝试在postgresql LIKE中使用下划线执行对特定数据模式的搜索,但它似乎不起作用。
客户端的版本为9.2.21,服务器的版本为9.4.12。
例如,
select *
from table1
where f1 like '___'
Run Code Online (Sandbox Code Playgroud)
即使表中明显存在匹配项,也不会返回任何内容(即,存在具有匹配值的数据),例如f1 = '123'
。
我想知道是否有系统配置/参数会影响此行为?
还是可以用其他方式解释一下?
hadoop ×5
hive ×5
sql ×3
apache-spark ×2
hiveql ×2
java ×2
python ×2
python-3.x ×2
bigdata ×1
decoding ×1
encoding ×1
hadoop-yarn ×1
hadoop2 ×1
linux ×1
oracle ×1
padding ×1
postgresql ×1
pyodbc ×1
python-2.7 ×1
redhat ×1
snappy ×1
sql-like ×1
sqldatatypes ×1
sqlplus ×1
unicode ×1