问题:我想使用以下方法将数据从S3导入Spark EMR:
data = sqlContext.read.json("s3n://.....")
Run Code Online (Sandbox Code Playgroud)
有没有办法可以设置Spark用来加载和处理数据的节点数量?这是我处理数据的示例:
data.registerTempTable("table")
SqlData = sqlContext.sql("SELECT * FROM table")
Run Code Online (Sandbox Code Playgroud)
上下文:数据不是太大,需要很长时间才能加载到Spark中,也需要查询.我认为Spark将数据划分为太多节点.我希望能够手动设置.我知道在处理RDD时sc.parallelize我可以将分区数作为输入传递.此外,我已经看到了repartition(),但我不确定它是否可以解决我的问题.在我的例子中,变量data是一个DataFrame.
让我更准确地定义分区.定义一个:通常被称为"分区键",其中一列中选择和索引,以加快查询(这不是我想要的).定义二:(这是我关注的地方)假设你有一个数据集,Spark决定它将它分布在许多节点上,以便它可以并行地对数据进行操作.如果数据量太小,这可能会进一步减慢进程.我该如何设置该值
我有一个没有扩展名的文件,这样的行(忽略行之间的间距,但每行是一个单独的行):
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
Run Code Online (Sandbox Code Playgroud)
当我将它导入Python
snap_fh = open("C:\Users\.......")
for row in snap_fh:
    print(type(row))
Run Code Online (Sandbox Code Playgroud)
行是"strings",我不能解析它OrderedDictionary
"OrderedDict([('key1', u'value1'), ('key2', 'value2'))])\n"
Run Code Online (Sandbox Code Playgroud)
如何将其导入为 OrderedDict 
ast.literal_eval(row) 不工作 !
任何机构都可以解释'and'和'或'语句在下面函数的return语句中做了什么?该函数似乎正在返回a和b的最大公分母.
 def gcd(a,b): return b and gcd(b, a % b) or a
谢谢 !
python ×2
apache-spark ×1
function ×1
import ×1
pyspark-sql ×1
python-2.7 ×1
python-3.x ×1
sql ×1
string ×1