炒股软件通达信把日k线存放在vipdoc\sz\lday下面。sz表示深圳交易所的证券。sz000002.day表示万科的日k线数据,它是二进制的,不能直接阅读,需要一个解析的规则。网络上有一些用python的struct库解析的方法,这里尝试用spark sql来解析。
先看一下二进制文件长啥样:
val df = spark.read.format("binaryFile").load("C:/zd_xdzq/vipdoc/sz/lday/sz000002.day")
df.select("content").show()
读出来是字节数组。每32个字节是一天的数据。这32个字节中,1-4是日期,5-8是开盘价,9-12是最高价,13-16是最低价,17-20是收盘价,21-24是成交额,25-28是成交量。
这个[76 7A 33 01]用python struct解析出来是20150902,用sql
select hex(20150902)
得到的结果是