我怎么能比较两个HDFS文件,因为没有diff?
我正在考虑使用Hive表并从HDFS加载数据,然后在2个表上使用join语句.有没有更好的方法?
我有一个shell脚本,其中某些参数设置如下:
k.sh:
export var="value"
export val2="value2"
Run Code Online (Sandbox Code Playgroud)
然后我有一个python脚本,我调用shell脚本,并希望使用这些环境变量
ex1.py:
import subprocess
import os
subprocess.call("source k.sh",shell=True)
print os.environ["var"]
Run Code Online (Sandbox Code Playgroud)
但我得到一个KeyError
如何在我的Python脚本中使用这些shell变量?
当我在spark-shell(1.6版本)上查询数据帧时,列名称不区分大小写.在Spark-Shell上
val a = sqlContext.read.parquet("<my-location>")
a.filter($"name" <=> "andrew").count()
a.filter($"NamE" <=> "andrew").count()
Run Code Online (Sandbox Code Playgroud)
以上结果都给了我正确的数量.但是当我在jar中构建它并通过"spark-submit"运行时,下面的代码失败,说NamE不存在,因为底层镶木地板数据用列保存为"名称"
失败:
a.filter($"NamE" <=> "andrew").count()
Run Code Online (Sandbox Code Playgroud)
通过:
a.filter($"name" <=> "andrew").count()
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么吗?有没有办法可以让它不区分大小写.我知道我可以在过滤之前使用select并将所有列作为小写别名,但是想知道它为什么表现不同.
我知道我们可以在Haskell中使用下面的模式匹配:
sum :: (Num a) => [a] -> a
sum [] = 0
sum (x:xs) = x + sum xs
Run Code Online (Sandbox Code Playgroud)
但为什么我们不能使用[x] ++ xs?
sum :: (Num a) => [a] -> a
sum [] = 0
sum ([x] ++ xs) = x + sum xs
Run Code Online (Sandbox Code Playgroud) 有人可以解释我这种行为,为什么1)在2)和3)工作时不起作用
1)
class bm(object):
def __init__(self,val):
self.a=val
def get(self):
return self.a
def set(self,val):
self.a=val
a=property(get,set)
In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)
给我递归错误,而下面的代码工作正常
2)
class bm(object):
def __init__(self,val):
self._a=val
def get(self):
return self._a
def set(self,val):
self._a=val
a=property(get,set)
In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)
工作正常.我可以访问ob.a并执行ob.a =''
即使这样也可以
3)
class bm(object):
def __init__(self,val):
self.a=val
def get(self):
return self._a
def set(self,val):
self._a=val
a=property(get,set)
In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)
工作正常.我可以访问ob.a并执行ob.a =''